在 CentOS 上使用 CxImage 的高级功能
一 高级图像处理能力
- 颜色与曝光控制:支持灰度化 GrayScale、亮度 AdjustBrightness、对比度 AdjustContrast、饱和度 AdjustSaturation、伽马校正 Gamma,可对图像进行细粒度视觉优化。
- 空间与几何变换:提供缩放 Resample(可按目标宽高或比例)、旋转 Rotate、镜像 Flip/Mirror、裁剪 Crop,满足常见几何处理需求。
- 滤波与边缘增强:内置高斯模糊 GaussianBlur、锐化 Sharpen、2D 线性滤波 Filter,以及边缘检测 Edge、轮廓增强 Contour,便于实现去噪、锐化与特征强化。
- 二值化与形态学:支持阈值 Threshold、自适应阈值 AdaptiveThreshold、抖动 Dither,以及膨胀 Dilate、腐蚀 Erode,可用于文档图像增强与分割预处理。
- 特效与图像信息:提供负片 Negative、Solarize、噪点 Noise、抖动 Jitter、颜色替换 Colorize等特效;可读取DPI(GetXDPI/GetYDPI)、调色板数量(GetNumColors)、像素访问(GetBits)与错误信息(GetLastError),便于质量控制和调试。
二 格式支持与编解码高级特性
- 广泛格式支持:覆盖BMP、GIF、JPEG、PNG、TIFF等主流格式,适合多源图像数据的统一接入与转换。
- 动态 GIF 与透明通道:GIF支持读取全部帧(可设置检索所有帧),PNG/BMP/ICO支持Alpha 通道,便于透明叠加与图标处理。
- 专业与高比特深度:TIFF支持多页与较高位深;PNG可读取多种颜色类型,但像素深度超过8 位时会被转换为8 位;JPEG支持色度二次采样配置(如4:2:2、4:4:4),在锐利边缘场景下可降低伪影。
- 元数据与分辨率:可获取DPI等基础元数据,满足打印与扫描类应用需求。
三 在 CentOS 上的启用与实践要点
- 依赖与构建:在 CentOS 7+ 上安装开发工具组与图像依赖(如libpng-devel、libjpeg-turbo-devel、libtiff-devel),使用CMake构建与安装,默认安装到**/usr/local/include与/usr/local/lib**。
- 编译与链接:示例命令为 g++ your_app.cpp -o your_app -lcximage -lpng -ljpeg -ltiff;若使用 CMake,可通过include_directories与link_directories指定头文件与库路径,并链接cximage及其依赖库。
- 运行期配置:如遇libcximage.so 未找到,将**/usr/local/lib加入LD_LIBRARY_PATH或在/etc/ld.so.conf中配置后执行ldconfig**更新缓存。
- 编码参数:通过SetJpegQuality设置JPEG 质量,通过Resample等比或定尺寸缩放,结合Gamma/Contrast/Brightness实现高质量输出。
四 典型高级用法示例
-
高质量缩放与保存为 JPEG(质量 90)
#include "cximage.h"
CxImage img;
img.Load("in.png", CXIMAGE_FORMAT_PNG);
img.Resample(1920, 1080); // 缩放
img.SetJpegQuality(90); // JPEG 质量
img.Save("out.jpg", CXIMAGE_FORMAT_JPG);
-
自适应阈值二值化(文档图像增强)
#include "cximage.h"
CxImage img;
img.Load("doc.png", CXIMAGE_FORMAT_PNG);
img.AdaptiveThreshold(255, 7); // 阈值上限与窗口大小
img.Save("doc_bin.png", CXIMAGE_FORMAT_PNG);
-
获取 DPI 与位深信息(质量控制)
#include "cximage.h"
#include <iostream>
CxImage img;
img.Load("in.tif", CXIMAGE_FORMAT_TIF);
std::cout << "DPI: " << img.GetXDPI() << " x " << img.GetYDPI() << "\n";
std::cout << "Colors: " << img.GetNumColors() << "\n";
-
边缘增强与锐化(特征强化)
#include "cximage.h"
CxImage img;
img.Load("in.jpg", CXIMAGE_FORMAT_JPG);
img.Edge(); // 边缘增强
img.Sharpen(); // 锐化
img.Save("out.jpg", CXIMAGE_FORMAT_JPG);