1. 安装CxImage库
在Ubuntu上使用CxImage的第一步是安装库文件及依赖。可以通过两种方式实现:
sudo apt install libcximage-dev,这会自动安装CxImage及其基础依赖(如libpng、libjpeg等),适合需要快速搭建环境的场景。git clone https://github.com/cximage/cximage.git;mkdir build && cd build;cmake ..(需提前安装CMake,可通过sudo apt install cmake安装);make && sudo make install。/usr/local/lib,头文件在/usr/local/include。2. 配置项目环境
若使用源码编译安装,需确保编译器能找到CxImage的头文件和库文件。可通过修改~/.bashrc(或~/.zshrc)添加以下内容:
export CPLUS_INCLUDE_PATH=/usr/local/include:$CPLUS_INCLUDE_PATH
export LIBRARY_PATH=/usr/local/lib:$LIBRARY_PATH
然后运行source ~/.bashrc使配置生效。对于Qt项目,还需在.pro文件中添加库链接:
LIBS += -L/usr/local/lib -lcximage -ljpeg -ltiff -lzlib -lpng
INCLUDEPATH += /usr/local/include
这能避免编译时的“未找到头文件”或“未链接库”错误。
3. 基础图像操作示例
CxImage的核心功能是加载、处理和保存图像。以下是常见操作的代码示例:
#include <cximage.h>
#include <iostream>
int main() {
CxImage image;
if (!image.Load("input.jpg", CXIMAGE_FORMAT_JPG)) {
std::cerr << "加载图像失败:" << image.GetLastError() << std::endl;
return 1;
}
image.Save("output.png", CXIMAGE_FORMAT_PNG); // 转换为PNG格式
return 0;
}
// 灰度化(将彩色图像转为黑白)
image.GrayScale();
// 调整亮度与对比度(参数:亮度偏移量、对比度系数)
image.Light(-30, 1.2f);
// 二值化(自适应阈值,适合复杂背景)
image.AdaptiveThreshold(0, 128, 0, 0, 0.5f);
// 保存处理后的图像
image.Save("processed.png", CXIMAGE_FORMAT_PNG);
这些操作覆盖了常见的图像预处理需求,如格式转换、增强对比度等。4. 解决常见问题
libjpeg或libpng,需安装对应开发包:sudo apt install libjpeg-dev libpng-dev libtiff-dev zlib1g-dev。CxImage::Load”,需检查是否链接了-lcximage,并确认库文件路径是否正确(如/usr/local/lib)。libgif-dev),并在加载时指定正确格式(如CXIMAGE_FORMAT_GIF)。5. 高级功能应用
CxMemFile:unsigned char* buffer = /* 内存中的图像数据 */;
long size = /* 数据大小 */;
CxMemFile memfile(buffer, size);
CxImage image(&memfile, CXIMAGE_FORMAT_JPG);
image.Save("from_memory.png", CXIMAGE_FORMAT_PNG);
// 复制图像到粘贴板
HANDLE hDIB = image.CopyToHandle();
if (OpenClipboard(nullptr)) {
EmptyClipboard();
SetClipboardData(CF_DIB, hDIB);
CloseClipboard();
}
// 从粘贴板粘贴图像
if (OpenClipboard(nullptr)) {
HANDLE hBitmap = GetClipboardData(CF_DIB);
if (hBitmap) {
CxImage newImage;
newImage.CreateFromHandle(hBitmap);
newImage.Save("pasted.png", CXIMAGE_FORMAT_PNG);
}
CloseClipboard();
}
这些功能适合需要集成图像处理到应用程序的场景(如图片编辑器、文档处理工具)。