在Python 中將RGB 顏色轉換為英文顏色名稱
給定一個RGB 值的元組,您可能希望將其轉換為人類-可讀的英文顏色名稱。如何使用 Python 來完成此操作?
解
要將 RGB 顏色轉換為其對應的英文顏色名稱,請考慮使用 webcolors 函式庫。它提供了 rgb_to_name() 函數,該函數接受 RGB 三元組作為輸入,如果存在匹配則傳回標準化顏色名稱。
範例
<code class="python">import webcolors # Get RGB color from an image im = Image.open("test.jpg") n, color = max(im.getcolors(im.size[0]*im.size[1])) # Convert to English color name color_name = webcolors.rgb_to_name(color, spec='css3') print(color_name) # Output: 'cadetblue'</code>
最接近的顏色名稱
如果找不到完美匹配,您可以使用以下程式碼找到最接近的顏色名稱:
<code class="python">def closest_colour(requested_colour): # Iterate through RGB space and calculate Euclidian distance min_distances = {} for hex_code, name in webcolors.CSS3_HEX_TO_NAMES.items(): r, g, b = webcolors.hex_to_rgb(hex_code) dist = sum((n - c for n, c in zip(requested_colour, (r, g, b))))**2 min_distances[dist] = name # Return the closest color name return min_distances[min(min_distances.keys())]</code>
完整功能
要處理這兩種情況,您可以定義一個返回實際且最接近的顏色名稱的函數:
<code class="python">def get_colour_name(requested_colour): try: closest_name = actual_name = webcolors.rgb_to_name(requested_colour) except ValueError: closest_name = closest_colour(requested_colour) actual_name = None return actual_name, closest_name</code>
範例用法
<code class="python">color = (119, 172, 152) actual_name, closest_name = get_colour_name(color) print("Actual:", actual_name, ", Closest:", closest_name)</code>
輸出
實際:無,最接近:cadetblue
以上是如何在Python中將RGB顏色轉換為英文顏色名稱?的詳細內容。更多資訊請關注PHP中文網其他相關文章!