Convertir la couleur RVB en nom de couleur anglais en Python
Étant donné un tuple de valeurs RVB, vous souhaiterez peut-être le convertir en un humain- nom de couleur anglais lisible. Comment cela peut-il être accompli en utilisant Python ?
Solution
Pour convertir une couleur RVB en son nom de couleur anglais correspondant, pensez à utiliser la bibliothèque webcolors. Il propose la fonction rgb_to_name(), qui prend un triplet RVB en entrée et renvoie le nom de couleur normalisé si une correspondance existe.
Exemple
<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>
Nom de couleur le plus proche
Si une correspondance parfaite n'est pas trouvée, vous pouvez trouver le nom de couleur le plus proche en utilisant le code suivant :
<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>
Fonction complète
Pour gérer les deux cas, vous pouvez définir une fonction qui renvoie les noms de couleurs réels et les plus proches :
<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>
Exemple d'utilisation
<code class="python">color = (119, 172, 152) actual_name, closest_name = get_colour_name(color) print("Actual:", actual_name, ", Closest:", closest_name)</code>
Sortie
Réel : aucun, le plus proche : cadetblue
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!