从RGB代码查找颜色名称的可靠方法

时间:2019-12-13 14:11:21

标签: python colors computer-vision scikit-image hsv

我正在尝试编写一个简单的函数,该函数基于RGB代码返回最接近的“参考”颜色的名称。 基于other SO问题,我将RGB转换为CIE LAB,并计算输入颜色和参考颜色之间的距离。然后,我正在寻找最小的距离,并采用相应的颜色。
不幸的是,建议的解决方案仅部分起作用。鉴于“深橙色”颜色被解释为红色。 我试图进行改进,并根据this的文章将 deltaE_ciede76 更改为 deltaE_ciede94 deltaE_ciede00

您是否知道他们如何在下一页解决此问题? https://convertingcolors.com/rgb-color-247_104_8.html-请向下滚动至“详细信息”部分

它写为:颜色可以描述为深饱和橙色。

您能给我些建议吗?

简单程序:

import numpy as np
from skimage.color import rgb2lab, deltaE_ciede94

def identify_colour(rgb_colour):
    reference = {
        "red"   : [53.23,  80.11, 67.22], # https://convertingcolors.com/cielab-color-53.23_80.11_67.22.html
        "orange": [74.93,  23.94, 78.96], # https://convertingcolors.com/cielab-color-74.93_23.94_78.96.html
    }
    input_colour = rgb2lab([[rgb_colour / 255]])

    selected = None
    d = {}
    for colour, value in reference.items():
        basic_lab = np.asarray(value)
        distance = deltaE_ciede94(basic_lab, input_colour)
        d[colour] = distance

    selected = min(d, key=d.get)
    print("selected: ", selected)
    print(d)
    return selected

def main():
    rgb_colour = np.array([247, 104, 8]) # https://convertingcolors.com/rgb-color-247_104_8.html
    identify_colour(rgb_colour)

if __name__ == '__main__':
    main()

1 个答案:

答案 0 :(得分:1)

我无法发表评论,只能回答,但因为这是我要评论的网站

“您是否知道他们如何在下一页上解决此问题?:https://convertingcolors.com/rgb-color-247_104_8.html-请向下滚动至“详细信息”部分。”

看一下这次演讲和幻灯片;这帮助我实现了此功能: https://www.dotconferences.com/2018/11/david-desandro-read-color-hex-codes

相关问题