首页 > 解决方案 > 使用 ImageMagick 从像素强度数组创建灰度图像时遇到问题

问题描述

我正在尝试使用 ImageMagick 使用强度值数组中的值输出 png 灰度图像。

我已使用 Image 构造函数尝试执行此操作,但它创建的图像与给定数组不完全匹配。

Image grayscaleImage(256, 256, "I", DoublePixel, inputPtr);
grayscaleImage.write("test.png");

正在创建的图像对于所有黑色像素(强度为 0)都具有正确的值,但对于非零像素,我只得到白色;没有灰色。我该如何纠正这个问题?还是我错误地使用了构造函数?谢谢!

标签: c++imagemagickmagick++

解决方案


正如 emcconville 所说,整数数组中的数字需要缩放到0.01.0for之间Magick::DoublePixel。我通过使用以下功能实现了这一点:

       (b-a)(x - min)
f(x) = --------------  + a
          max - min

其中a == 0, b == 1, x == inputPtr[index],min == 0max == 255.


推荐阅读