python從一組顏色中找出與給定顏色最接近的顏色

e2ex 9年前發布 | 1K 次閱讀 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)</pre>

 本文由用戶 e2ex 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!