c++ - 如何通过 ImageMagicK 将图像数据放入数组?

标签 c++ visual-studio-2010 image-processing imagemagick

我不知道从哪里开始。
我想用数组中的 ImageMagick 读取图像。
此时,没有错误:

My_image.read("c:\\a.jpg");
我想将我已经读取的图像数据放入数组中。
我想使用 ImageMagick 库写入文件。
这是我的代码:
...
master.read("c:\\a.jpg");

Image my_image("640x480", "white"); 
my_image.modifyImage(); 
Pixels my_pixel_cache(my_image); 
PixelPacket* pixels; 
int start_x = 0, start_y = 0,  size_x = 640, size_y = 480; 
*pixels = Color("black");
*(pixels+200) = Color("green");
my_pixel_cache.sync();

...
但我无法获得 a.jpg 的数组.如何获取 a.jpg图像数据到一个数组来修改?

最佳答案

你必须初始化你的PixelPacket :

PixelPacket *pixels = my_image.getPixels(0, 0, 640, 480);

然后您可以使用嵌套循环逐像素修改图像:
int w = 640;
for (int y = 0; y != h; ++y)
    for (int x = 0; x != w; ++x)
    {
        pixels[w * y + x].red = 255; // if MAGICKCORE_QUANTUM_DEPTH=8
        pixels[w * y + x].green = 0;
        pixels[w * y + x].blue = 0;
    }
Magick::PixelPacketstruct其中包含 red , greenblue成员(加上第四 channel 的另一个成员)。最后,将更改写入磁盘:
my_image.syncPixels();
my_image.write("c:\\temp\\output.jpg");

关于c++ - 如何通过 ImageMagicK 将图像数据放入数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33361457/

相关文章:

python - 有没有办法使我的相机的视平面与场景中的物体表面平行?

c++ - 什么应该是一个随机变量总是生成 5

c++ - 在 C++ 中读取文件并处理可能的错误的可移植方法

C++ opencv 访问像素值不正确

C++ 和 CRTP 模式实现和编译器困境

visual-studio - 如何使Visual Studio 2010突出显示变量实例

python - Pillow ImageDraw 文本坐标居中

c++ -/MT 选项(MSVCR100.dll 依赖项的静态链接)不适用于 Visual Studio

wpf - 解锁用于 VS2010 的 Ribbon WPF 程序集

java - 如何锐化android中的图像?