c++ - 如何对像素数据使用 CImg 函数?

标签 c++ cimg

我正在使用 Visual Studio 并希望找到一个有用的图像处理库来处理旋转等基本图像处理功能,这样我就不必继续手动编码了。我遇到了 CImg,它支持此功能以及许多其他有用的功能以及插值。

但是,我看到的所有示例都显示通过加载和使用完整图像来使用 CImg。我想使用像素数据。所以我的循环是典型的:

for (x=0;x<width; x++)
for (y=0;y<height; y++)

我想在这个实例中执行双线性或双三次旋转,我看到 CImg 支持这个。它提供了 rotate() 和 get_rotate 函数等。

我在网上找不到任何示例来说明如何将其用于像素数据。理想情况下,我可以简单地将像素颜色、x、y 和插值方法传递给它,并让它返回结果。

谁能提供一些有用的建议?如果 CImg 不是这种类型的正确库,谁能推荐一个简单、轻量级、易于使用的库?

谢谢!

最佳答案

您可以使用迭代器将像素数据复制到 CImg 类,并在完成后将其复制回来。

std::vector<uint8_t> pixels_src, pixels_dst;
size_t width, height, n_colors;

// Copy from pixel data
cimg_library::CImg<uint8_t> image(width, height, 1, n_colors);
std::copy(pixels_src.begin(), pixels_src.end(), image.begin());

// Do image processing

// Copy to pixel data
pixels_dst.resize(width * height * n_colors);
std::copy(image.begin(), image.end(), pixels_dst.begin());

关于c++ - 如何对像素数据使用 CImg 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55566525/

相关文章:

c++ - std::stringstream 作为参数

C++ 构造函数隐式返回类型

c++ - cimg 多窗口放置

c++ - OpenGL 纹理分色

c++ - 将字符串映射到类成员

c++ - 为什么 int ia2[10] 的默认值为 0,即使它是在函数内部定义的?

c++ - Live555 RTSP服务器不使用UDP

c++ - 如何使用 xlib 正确截屏?

c++ - 在每个逗号分隔的对象上执行成员函数

c++ - 识别图像上字符的开始和结束 XY vector