我正在使用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之间的红色值而不是小数。有谁知道如何得到这个或计算(我明白那里可能没有这个功能所以我需要自己计算)
答案 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之间的整数。