使用Magick ++

时间:2016-02-03 10:37:54

标签: c++ magick++

我正在使用C ++和Magick ++。我需要从像素中获取红色,绿色和蓝色值,但我做的任何事情都会让我获得超过255或十进制值的值。下一个代码给出了十进制值

ColorRGB rgb(someImage.pixelColor(x, y));
cout << rgb.red();
cout << rgb.green();
cout << rgb.blue();

另外,我不知道我是否可以使用像这样的量子值

image.pixelColor(x, y).redQuantum();

获取0到255之间的红色值而不是小数。有谁知道如何得到这个或计算(我明白那里可能没有这个功能所以我需要自己计算)

1 个答案:

答案 0 :(得分:0)

如果您查看Magick++ documentation,则在使用ColorRGB时,颜色值会显示为0到1之间的小数值。

这实际上很有意义,因为您还可以选择要使用的颜色深度。而不是将您锁定为从零到255的值,小数0.0-1.0可以很容易地缩放到任何颜色深度。

如果您确定要从0-255看到它,即使基础颜色深度是32位,您也可以轻松编写转换函数。

<强>更新

以下是如何缩放值的示例:

 uint8_t red = (uint8_t)(rgb.red() * 255);

这会将其缩放为8但在0到255之间的整数。