python从一组颜色中找出与给定颜色最接近的颜色详解编程语言

这段代码非常有用,可以找到指定颜色相似的颜色,比如有一组8个颜色,现在给定一个rgb格式的演示,找出它与8个颜色中的哪一个最接近,如果你需要做一个按照图片颜色搜索图片的程序,这个就非常有用了。

from colorsys import rgb_to_hsv 
  
colors = dict(( 
((196, 2, 51), "RED"), 
((255, 165, 0), "ORANGE"), 
((255, 205, 0), "YELLOW"), 
((0, 128, 0), "GREEN"), 
((0, 0, 255), "BLUE"), 
((127, 0, 255), "VIOLET"), 
((0, 0, 0), "BLACK"), 
((255, 255, 255), "WHITE"),)) 
  
def to_hsv( color ): 
    """ converts color tuples to floats and then to hsv """ 
    return rgb_to_hsv(*[x/255.0 for x in color]) #rgb_to_hsv wants floats! 
  
def color_dist( c1, c2): 
    """ returns the squared euklidian distance between two color vectors in hsv space """ 
    return sum( (a-b)**2 for a,b in zip(to_hsv(c1),to_hsv(c2)) ) 
  
def min_color_diff( color_to_match, colors): 
    """ returns the `(distance, color_name)` with the minimal distance to `colors`""" 
    return min( # overal best is the best match to any color: 
        (color_dist(color_to_match, test), colors[test]) # (distance to `test` color, color name) 
        for test in colors) 
  
color_to_match = (255,255,0) 
print min_color_diff( color_to_match, colors)

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/8386.html

(0)
上一篇 2021年7月18日
下一篇 2021年7月18日

相关推荐

发表回复

登录后才能评论