【问题标题】:How to get color names from its rgb value [closed]如何从其 rgb 值中获取颜色名称
【发布时间】:2013-12-02 02:22:36
【问题描述】:

我正在编写一个程序来获取颜色的名称。我可以得到像素的 rgb 值,但不知道如何得到它的名字。 是否有任何 c++ 库可以从其 rgb 值中获取颜色的名称? 或者找到最匹配的颜色名称?

【问题讨论】:

  • 您有计划使用的名称列表吗?还是你按照某种标准去?颜色本质上没有名称。
  • 您将拥有一个对应于 1 个名称的十六进制值范围。定义范围的粒度完全取决于您。您可以有 10 种颜色或 10000 种颜色。如果您的用途有限,那么您可以对名称进行硬编码(假设它是一个易于管理的数字)。
  • 我没有名字,也不确定我会得到什么颜色。我的基本想法是从 HTML 定义的颜色中获取名称。
  • 您可能需要考虑在将十六进制值称为“那个颜色”之前需要多接近。 #000000 是非常明显的“黑色”,但 #010100 和 #010204 也是如此吗?在 RGB 空间中有 16,216,214 种不同的颜色(我可能会偏离几个百分点)。

标签: c++ colors rgb


【解决方案1】:

除了HTML color tables,还有RAL standard,这是业界使用的知名系统。

基本上需要的是带有名称和 RGB 值的代码表。只要表格的分辨率和光谱足够,就可以轻松找到最接近的颜色名称:

一个简单的CSV reader,加载颜色表可能是一个解决方案。

【讨论】:

  • 在这些表中查找时,我建议在 HSV 空间而不是 RGB 空间中查找最接近的颜色。您可能会得到更好的匹配,即更接近人们选择的匹配。
  • 听起来很合理。您如何比较 HSV 载体?根据这样的事情:en.wikipedia.org/wiki/Color_difference?我倾向于使用 RGB 向量的标量积,可能只使用亮度加权。或者转换为 YUV stackoverflow.com/a/5392276/1175253
  • 写维基百科文章的人比我想多了。我不知道 YUV 或 HSV 比较是否更接近人们的选择。我的直觉是 HSV,因为我认为人们会将浅红色和深红色放在相同亮度的红色和绿色之前。
  • 我建议使用 Lab colorspace 而不是 RGB 或 HSV,因为“实验室颜色旨在接近人类视觉。它渴望感知一致性 [...]”。
  • 仅供参考,HTML 颜色表部分的链接断开
猜你喜欢
  • 1970-01-01
  • 2011-11-27
  • 2015-05-09
  • 2014-07-20
  • 1970-01-01
  • 1970-01-01
  • 2014-06-21
  • 1970-01-01
  • 2012-03-02
相关资源
最近更新 更多