在 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中文网其他相关文章!