【问题标题】:Getting pixel RGB values 0-255 in C++ using Magick++使用 Magick++ 在 C++ 中获取像素 RGB 值 0-255
【发布时间】:2016-02-03 10:37:54
【问题描述】:

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

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

我也不知道能不能像这样使用 Quantum 值

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

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

【问题讨论】:

  • 试试cout &lt;&lt; static_cast&lt;long&gt;(rgb.red() * 255);

标签: c++ magick++


【解决方案1】:

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

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

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

更新

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

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

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

【讨论】:

  • 正在寻找关于如何转换它的示例代码,因为这是我第一次使用颜色,所以我不知道这一切是如何工作的(对此一无所知),但这也很有帮助,谢谢。
猜你喜欢
  • 1970-01-01
  • 2015-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-05
  • 2011-07-09
  • 1970-01-01
相关资源
最近更新 更多