温馨提示×

Linux下cximage如何测试

小樊
40
2026-06-30 18:26:34
栏目: 智能运维

在 Linux 下,CxImage 是一个比较老的 C++ 图像处理库(Windows 起源),在 Linux 上使用需要手动编译 + 测试。下面我按从编译到运行测试给你一个完整流程,适合新手。


一、确认环境

先确认基础开发环境:

sudo apt update
sudo apt install build-essential g++ make cmake

如果你用的是 CentOS / RHEL:

sudo yum groupinstall "Development Tools"

二、获取 CxImage 源码

CxImage 官方已多年未更新,常见方式

1️⃣ 从 GitHub 镜像获取(推荐)

git clone https://github.com/pedro--costa/cximage.git
cd cximage

或:

git clone https://github.com/kevinvandeput/cximage.git

不同版本结构略有区别,但核心是 CxImage/ 目录


三、编译 CxImage(Linux)

方式一:使用 CMake(最简单)

mkdir build
cd build
cmake ..
make

如果成功,会生成:

libcximage.a

.so(取决于配置)


方式二:手动编译(经典方式)

cd CxImage
g++ -c *.cpp -I. -I../zlib -I../jpeg -I../png
ar rcs libcximage.a *.o

需要依赖:

  • zlib
  • libjpeg
  • libpng

安装依赖:

sudo apt install libjpeg-dev libpng-dev zlib1g-dev

四、写一个测试程序(test_cx.cpp)

#include <iostream>
#include "CxImage.h"

int main() {
    CxImage image;

    if (!image.Load("test.jpg", CXIMAGE_FORMAT_JPG)) {
        std::cerr << "Load image failed!" << std::endl;
        return -1;
    }

    std::cout << "Image loaded: "
              << image.GetWidth() << "x"
              << image.GetHeight() << std::endl;

    image.GrayScale();
    image.Save("test_gray.jpg", CXIMAGE_FORMAT_JPG);

    std::cout << "Gray image saved!" << std::endl;
    return 0;
}

五、编译并运行测试程序

1️⃣ 编译

g++ test_cx.cpp -o test_cx \
-I./CxImage \
-L./build \
-lcximage \
-ljpeg -lpng -lz

2️⃣ 运行

./test_cx

✅ 正确输出示例:

Image loaded: 800x600
Gray image saved!

六、常见 Linux 下问题 & 解决

❌ 1. 找不到头文件

CxImage.h: No such file or directory

✅ 解决:

-I/path/to/CxImage

❌ 2. undefined reference to CxImage::Load

undefined reference to CxImage::Load(...)

✅ 原因:

  • 没链接 libcximage
  • 或编译顺序错误

✅ 正确顺序:

g++ test.cpp -lcximage -ljpeg -lpng -lz

❌ 3. Linux 下 CxImage 不稳定

⚠️ 注意:

  • CxImage 不是为 Linux 原生设计
  • 部分格式(TGA、RAW)可能异常
  • 内存管理不如现代库

七、替代方案(强烈建议)

如果你只是想在 Linux 下做图像处理,更推荐

说明
OpenCV 工业级、跨平台
FreeImage 更接近 CxImage 风格
stb_image 单头文件,轻量
libpng + libjpeg 底层但稳定

OpenCV 示例:

#include <opencv2/opencv.hpp>
using namespace cv;

int main() {
    Mat img = imread("test.jpg");
    cvtColor(img, img, COLOR_BGR2GRAY);
    imwrite("gray.jpg", img);
}

八、总结

CxImage 在 Linux 下可以测试,但需要手动编译
✅ 核心步骤:

  1. 获取源码
  2. 编译成 .a / .so
  3. 写测试程序
  4. 链接依赖库

如果你愿意,我可以:

  • ✅ 帮你 写一个完整 CMakeLists.txt
  • ✅ 帮你 修复具体编译错误
  • ✅ 给你 CxImage vs OpenCV 的迁移方案

你可以直接贴你的 错误信息Linux 发行版

0