How to Convert an RGB Color Tuple to an English Color Name in Python?

Linda Hamilton
Release: 2024-10-30 13:37:03
Original
494 people have browsed it

How to Convert an RGB Color Tuple to an English Color Name in Python?

Convert RGB Color to English Color Name in Python

You want to transform an RGB color tuple into a color name, such as 'yellow' or 'blue'.

Consider the following code:

<code class="python">import Image
im = Image.open("test.jpg")
n, color = max(im.getcolors(im.size[0]*im.size[1]))
print color
# (119, 172, 152)</code>
Copy after login

This code extracts the dominant color from an image and stores it as a tuple. How can you convert this tuple to a color name in Python?

Solution:

The webcolors package offers a useful function called rgb_to_name():

rgb_to_name(rgb_triplet, spec='css3')
Copy after login

This function converts a three-tuple of integer RGB values into its corresponding color name within a specified color specification (e.g., 'css3'). For example:

<code class="python">import webcolors
rgb_to_name((0, 0, 0)) # 'black'</code>
Copy after login

To find the closest color name to a given RGB tuple, you can use a custom function like the following:

<code class="python">import math
import webcolors

def closest_colour(requested_colour):
    min_colours = {}
    for key, name in webcolors.CSS3_HEX_TO_NAMES.items():
        r_c, g_c, b_c = webcolors.hex_to_rgb(key)
        rd = (r_c - requested_colour[0]) ** 2
        gd = (g_c - requested_colour[1]) ** 2
        bd = (b_c - requested_colour[2]) ** 2
        min_colours[(rd + gd + bd)] = name
    return min_colours[min(min_colours.keys())]</code>
Copy after login

You can then utilize the following function to retrieve both the actual color name if it exists and the closest matching name:

<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>
Copy after login

With this function, you can obtain both the exact color name or the closest approximation for a given RGB tuple.

The above is the detailed content of How to Convert an RGB Color Tuple to an English Color Name in Python?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!