将子颜色名称转换为父级颜色名称

3

我参考了一个问题https://dev59.com/9Gkw5IYBdhLWcg3wus7K#9694246,通过RGB值获取颜色名称。 但是存在太多的颜色名称。因此我想要做的是,如果得到颜色名称“栗色”,将其更改为“红色”。同样,如果得到“军服蓝”颜色,则将其更改为“蓝色”。

actual_name, closest_name = get_colour_name(requested_colour)
if actual_name == None:
    actual_name = get_parantColor(closest_name) #if closest_name was maroon, return red.
1个回答

1

这个问题有很多种回答方式。它真的取决于两件事:

  1. 你的基础颜色池是什么,以及
  2. 你想使用什么相似度度量(即,从任意颜色到基础颜色的翻译(匹配)函数应该是什么样子)——与引用问题中的webcolors相同还是不同?

例如,一个非常简单的方法是将'red''green''blue'作为您的颜色池,并且翻译函数可以检查颜色的红色、绿色和蓝色分量,并返回其中最高的颜色。例如,对于颜色RGB(128,0,0)(栗色),您将返回'red',因为红色分量是最突出的。 (然而,如果三个分量都相等怎么办?这也是您需要定义的内容。)

如果你可能遇到的颜色数量有限,另一种解决方案是创建一个字典,将输入颜色映射到你的基本颜色之一:{'maroon': 'red', 'cadet blue': 'blue', ...},然后使用它。
解决方案实际上取决于你如何定义问题。前面两点可以帮助你理清思路。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接