Holen Sie sich die Hauptfarbe (Farbtrend) eines Bildes oder Logos in der Python-Version

高洛峰
Freigeben: 2016-10-18 14:59:05
Original
1475 Leute haben es durchsucht

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

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!