c++ - 使用 ImageMagick 从像素强度数组创建灰度图像时遇到问题
问题描述
我正在尝试使用 ImageMagick 使用强度值数组中的值输出 png 灰度图像。
我已使用 Image 构造函数尝试执行此操作,但它创建的图像与给定数组不完全匹配。
Image grayscaleImage(256, 256, "I", DoublePixel, inputPtr);
grayscaleImage.write("test.png");
正在创建的图像对于所有黑色像素(强度为 0)都具有正确的值,但对于非零像素,我只得到白色;没有灰色。我该如何纠正这个问题?还是我错误地使用了构造函数?谢谢!
解决方案
正如 emcconville 所说,整数数组中的数字需要缩放到0.0
和1.0
for之间Magick::DoublePixel
。我通过使用以下功能实现了这一点:
(b-a)(x - min)
f(x) = -------------- + a
max - min
其中a == 0
, b == 1
, x == inputPtr[index]
,min == 0
和max == 255
.
推荐阅读
- r - 在每个组上拟合一个模型并使用来自该组之外的所有行的数据对其进行评估,R
- javascript - 无法在 firestore 的 productdetail 页面上获取每家餐厅的详细信息
- azure-devops - 如何将发布工件部署到不同子网中的机器位置
- python - 统计列中连续True的个数,False时重新开始
- kubernetes - 选择节点以使用 Kubernetes 执行 Nextflow 工作流
- apache-spark - 用于处理不同来源的增量数据加载的 AWS Glue
- javascript - jquery如何在数据表的每一行中添加批准和拒绝按钮?
- javascript - 剧作家超时
- python - 如何使用通配符删除列中的所有字符串?
- facebook - 带有自定义重定向 URL 的 Facebook 登录手动流程