Heim > Artikel > Web-Frontend > Wie konvertiere ich RGB-Farben in Python in englische Farbnamen?
RGB-Farbe in englischen Farbnamen in Python konvertieren
Gegeben ein Tupel von RGB-Werten, möchten Sie es vielleicht in einen menschlichen Farbnamen umwandeln. lesbarer englischer Farbname. Wie kann dies mit Python erreicht werden?
Lösung
Um eine RGB-Farbe in den entsprechenden englischen Farbnamen zu konvertieren, sollten Sie die Verwendung der Webcolors-Bibliothek in Betracht ziehen. Es bietet die Funktion rgb_to_name(), die ein RGB-Triplett als Eingabe verwendet und den normalisierten Farbnamen zurückgibt, wenn eine Übereinstimmung vorliegt.
Beispiel
<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>
Name der nächstgelegenen Farbe
Wenn keine perfekte Übereinstimmung gefunden wird, können Sie den Namen der nächstgelegenen Farbe mithilfe des folgenden Codes finden:
<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>
Vollständige Funktion
Um beide Fälle zu behandeln, können Sie eine Funktion definieren, die die tatsächlichen und nächstgelegenen Farbnamen zurückgibt:
<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>
Beispielverwendung
<code class="python">color = (119, 172, 152) actual_name, closest_name = get_colour_name(color) print("Actual:", actual_name, ", Closest:", closest_name)</code>
Ausgabe
Aktuell: Keine, Am nächsten: cadetblue
Das obige ist der detaillierte Inhalt vonWie konvertiere ich RGB-Farben in Python in englische Farbnamen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!