Heim > Artikel > Backend-Entwicklung > Holen Sie sich die Hauptfarbe (Farbtrend) eines Bildes oder Logos in der Python-Version
Wenn Sie Google oder Baidu verwenden, um nach Bildern zu suchen, werden Sie feststellen, dass es eine Bildfarboption gibt, die sich sehr interessant anfühlt. Einige Leute denken vielleicht, dass dies künstlich unterteilt werden muss, aber es ist so Ich schätzte, dass die Leute erschöpft sein werden, nur ein Scherz, natürlich können riesige Bilder nur maschinell erkannt werden.
Kann diese Funktion mit Python implementiert werden? Die Antwort lautet: Sie können
die leistungsstarke Bildverarbeitungsfunktion des PIL-Moduls von Python verwenden. Der Code lautet wie folgt:
import colorsys
def get_dominant_color(image):
#Konvertierung des Farbmodus zur Ausgabe eines RGB-Farbwerts
image = image.convert('RGBA')
#Generieren Sie Miniaturansichten, reduzieren Sie den Rechenaufwand und reduzieren Sie die CPU-Belastung
image.thumbnail((200, 200))
max_score = None
dominant_color = None
für count, (r, g, b, a) in image.getcolors(image.size[0] * image.size[1]):
= colorsys.rgb_to_hsv (r / 255.0, g / 255.0, b / 255.0) [1]
y = min (R * 2104 g * 4130 B * 802 4096 1310 72) >> 13, 235)
y = (y - 16,0) / (235 - 16)
> wenn y > 0,9 ; # Farben indem Sie die Anzahl mit Null multiplizieren, ihnen aber trotzdem einen niedrigen Wert geben
wenn Punktzahl > max_score:
max_score = Punktzahl
dominant_color = (r, g, b)
dominante_Farbe zurückgeben
Verwendung:
aus PIL-Importbild
print get_dominant_color(Image.open('logo.jpg'))
Dies gibt eine RGB-Farbe zurück, aber dieser Wert ist ein sehr präziser Bereich. Wie erreichen wir also den Farbumfang von Baidu-Bildern? ?
Tatsächlich ist die Methode sehr einfach. r/g/b sind alle Werte von 0-255. Wir müssen diese drei Werte nur in gleiche Intervalle aufteilen und sie dann kombinieren Näherungswerte ermitteln. Zum Beispiel: Teilen Sie es in 0-127 und 128-255 auf und kombinieren Sie sie dann frei. Es können acht Kombinationen angezeigt werden, aus denen Sie dann einfach die repräsentativeren Farben auswählen.Natürlich gebe ich nur ein Beispiel. Sie können es auch in feinere Details aufteilen, damit die angezeigten Farben genauer sind. ~~ Versuchen wir es schnell