如何确定给定的RGB颜色是否在一系列已知颜色之间?

这里有一些代码可以尝试演示我正在尝试做的事情:
def check_color(color):

    green_start = (40, 40, 40)
    green_end   = (70, 70, 70)

    if color > green_start and color < green_end:
        return True

    return False

if check_color((60, 50, 60)):
    print 'the color is "green"'
使用PIL,我试图检测给定的颜色是否为“绿色”(在本例中)。颜色以(R,G,B)元组的形式提供。 我该如何进行比较?     
已邀请:
将您的RGB值转换为另一种颜色模型(如HSV)并比较Hue可能会有所帮助。     
您可以尝试单独检查每个颜色组件:
return all(s <= c <= e for c, s, e in zip(color, green_start, green_end))
ideone     
您可以选择颜色的截止点。 RGB颜色由3个值表示,这些值表示混合用于制作颜色的红色,绿色和蓝色的量。您需要确定您认为哪种混合物是某种颜色。 例如,只要绿色和蓝色的值小于红色值的一半,就可以说颜色是红色。即:(r = 100,g = 49,b = 49)将是红色但是(r = 100,g = 49,b = 50)不会是因为50不小于红色值的一半,100。 (r = 50,g = 23,b = 24)将为红色。您可以将相同的规则应用于绿色和蓝色。 伪代码:
def get_color(color)
    r,g,b = color
    if g < r/2 and b < r/2
        return "red"
    if r < g/2 and b < g/2
        return "green"
    if r < b/2 and g < b/2
        return "blue"
这仅包括红色,绿色和蓝色,您可能需要调整规则以满足您的需求。你也可以制定其他规则来寻找黄色或紫色等其他颜色......     

要回复问题请先登录注册