我正在使用 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/