[英]How to use CImg functions with pixel data?
我正在使用 Visual Studio 并希望找到一个有用的图像处理库,它将处理基本的图像处理功能,例如旋转,这样我就不必继续手动编码了。 我遇到了 CImg,它支持这一点,以及许多其他有用的功能,以及插值。
但是,我看到的所有示例都显示通过加载和使用完整图像来使用 CImg。 我想处理像素数据。 所以我的循环是典型的:
for (x=0;x<width; x++)
for (y=0;y<height; y++)
我想在这种情况下执行双线性或双三次旋转,我看到 CImg 支持这一点。 它提供了一个 rotate() 和 get_rotate 函数等。
我在网上找不到任何示例来说明如何将其与像素数据一起使用。 理想情况下,我可以简单地将像素颜色、x、y 和插值方法传递给它,并让它返回结果。
任何人都可以提供任何有用的建议吗? 如果 CImg 不是这种类型的合适库,有人可以推荐一个简单、轻量级、易于使用的库吗?
谢谢!
您可以使用迭代器将像素数据复制到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());
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.