0

我正在使用 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 之间的红色值,而不是十进制。有谁知道如何得到这个或计算(我知道可能没有这个功能,所以我需要自己计算)

4

1 回答 1

0

如果您查看Magick++ 文档,似乎在使用ColorRGB颜色值时表示为 0 和 1 之间的十进制值。

这实际上很有意义,因为您似乎可以选择要使用的颜色深度。十进制 0.0-1.0 可以轻松缩放到任何颜色深度,而不是将您锁定在从 0 到 255 的值中。

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

更新

这是一个如何缩放值的示例:

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

这会将其缩放为 8 但介于 0 和 255 之间的整数。

于 2016-02-03T10:44:56.573 回答