[Python] Holen Sie sich die Hauptfarbe aus dem Screenshot

Dieses Mal erhalten wir die Hauptfarbe aus dem geladenen Bild. Wir werden das normale Farbpokemon und das unterschiedliche Farbpokemon in 5 Hauptfarben unterteilen, damit Sie sie vergleichen können.

importieren

from sklearn.cluster import KMeans
import matplotlib.pyplot as plt
import argparse
import utils
import cv2
import numpy as np

Bildaufnahme

Wenn das Bild von OpenCV gelesen wird, wird es in RGB konvertiert, da es so wie es ist BGR ist.

image_path = "./Wonoragon 00001.jpg "

image = cv2.imread(image_path)

image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)

Bilden Sie ein NumPy-Array zu einer Liste von RGB-Pixeln.

image = image.reshape((image.shape[0] * image.shape[1], 3))

k-means

Verwenden Sie k-means, um die dominanteste Farbe zu finden. Machen Sie die Anzahl der Cluster 5 und gruppieren Sie die Liste der RGB-Pixel.

clt = KMeans(n_clusters = 5)
clt.fit(image)

Finden Sie den Prozentsatz der Hauptfarbe aus dem Histogramm.

numLabels = np.arange(0, len(np.unique(clt.labels_)) + 1)
(hist, _) = np.histogram(clt.labels_, bins=numLabels)

hist = hist.astype("float")
hist /= hist.sum()

Holen Sie sich die Hauptfarbe

Verwenden Sie die for-Anweisung, um die fünf Hauptfarben und ihre Verhältnisse zu extrahieren.

bar = np.zeros((50, 300, 3), dtype="uint8")
cluster_centers_arr = clt.cluster_centers_.astype(int, copy=False)
startX = 0

for (percent, color) in zip(hist, cluster_centers_arr):
    color_hex_str = '#%02x%02x%02x' % tuple(color)
    print(percent , color_hex_str)
    endX = startX + (percent * 300)
    cv2.rectangle(bar, (int(startX), 0), (int(endX), 50),color.astype("uint8").tolist(), -1)
    startX = endX

Zeigt 5 Hauptfarben an.

plt.figure()
plt.axis("off")
plt.imshow(bar)
plt.show()

Ausführungsergebnis

Original-Screenshot (Wonoragon) ウオノラゴン.png

Ausführungsergebnis

0.7486892361111112 #dd4928
0.05908420138888889 #0b0403
0.038871527777777776 #b7d1e0
0.13411458333333334 #d21d1d
0.01924045138888889 #294e37
通常配色.png

Original-Screenshot (Wonoragon in verschiedenen Farben) 色違いウオノラゴン.png

Ausführungsergebnis

0.7698796296296296 #dd4828
0.03972407407407407 #c9d0ca
0.026488888888888888 #262220
0.025824074074074076 #6e6166
0.13808333333333334 #d41d1a
色違い配色.png

Ich konnte 5 Hauptfarben erhalten, aber wenn es so blieb, wie es war, würde sich der Anteil des Hintergrunds erhöhen. Weil ich die Hauptfarbe von Pokemon aus den drei Farben ohne die Hauptfarbe der Hintergrundfarbe erhalten konnte Von dort aus können Sie anscheinend beurteilen, ob es sich um eine andere Farbe handelt.

Referenz

OpenCV and Python K-Means Color Clustering

Extrahieren Sie die Hauptfarbe mit Python aus dem Bild

Recommended Posts

[Python] Holen Sie sich die Hauptfarbe aus dem Screenshot
Holen Sie sich den Inhalt von Git Diff aus Python
[Python] Ruft den Gesetzestext aus der e-GOV-Gesetz-API ab
Holen Sie sich den Rückkehrcode eines Python-Skripts von bat
[Python] Anpassen der Farbleiste
[Python] Holen Sie sich den Vormonat
Holen Sie sich Ihre Herzfrequenz von der Fitbit-API in Python!
Rufen Sie den Wert ab, während Sie den Standardwert aus dict in Python angeben
Holen Sie sich den Desktop-Pfad in Python
Existenz aus Sicht von Python
Holen Sie sich das Wetter mit Python-Anfragen
Holen Sie sich das Wetter mit Python-Anfragen 2
Holen Sie sich den Skriptpfad in Python
[Python] Passen Sie den Standard für die Farbkarte an
So erhalten Sie die Python-Version
Verwenden Sie die Flickr-API von Python
Python Holen Sie sich das kommende Wetter von der Wetter-API
Holen Sie sich den Desktop-Pfad in Python
Holen Sie sich den Hostnamen in Python
Python Hinweis: Holen Sie sich den aktuellen Monat
So erhalten Sie mithilfe der Mastodon-API Follower und Follower von Python
[Python] Ruft das Aktualisierungsdatum eines Nachrichtenartikels aus HTML ab
Holen Sie sich HTML von Element mit Python-Selen
Erhalten Sie Wechselkurse von offenen Wechselkursen in Python
[Hinweis] Mit Python Daten von PostgreSQL abrufen
Holen Sie sich Tastenanschläge von / dev / input (python evdev)
Notizen vom Anfang von Python 1 lernen
[Python] Ruft den Variablennamen mit str ab
Holen Sie sich den Batteriestand von SwitchBot mit Python
Starten Sie den Python-Interpreter über Git Bash
Ab Python 3.4 wird pip zum Standardinstallationsprogramm! ??
[Python] Ruft den Zeichencode der Datei ab
Ruft die EDINET-Codeliste in Python ab
Holen Sie sich mit Python die Niederschlagswahrscheinlichkeit aus XML
Holen Sie sich die Adresse von Längen- und Breitengrad
Holen Sie sich WordPress-Beiträge aus der letzten Woche
Notizen vom Anfang von Python 2 lernen
Holen Sie sich nur den Text aus dem Django-Formular.
Abrufen des Metrikverlaufs von MLflow in Python
Holen Sie sich mit Python Zeitreihendaten von k-db.com
Holen Sie sich das Wetter in Osaka über Web-API (Python)
[Python] Ruft die Skalenbezeichnung der Figur ab / bearbeitet sie
Holen Sie sich den Aufrufer einer Funktion in Python
[Bash] Holen Sie sich die Kraft von Python aus Bash mithilfe der folgenden Dokumentation
SQL zu SQL
Ruft den Fenstertitel des X-Fenstersystems in Python ab
[Python] Ruft das Datum der letzten Aktualisierung der Website ab
MeCab von Python
So erhalten Sie die Dateien im Ordner [Python]
Informationen zum BTC / JPY-Board erhalten Sie von Python --bitflyer
[Python] Ich habe versucht, den Typnamen als Zeichenfolge aus der Typfunktion abzurufen
Verwenden Sie das nghttp2 Python-Modul von Homebrew aus pyenvs Python
[Python] Holen Sie sich den Tag (Englisch & Japanisch)
Holen Sie sich nur Artikel von Webseiten in Python
Versuchen Sie, direkt von Python 3 aus auf die YQL-API zuzugreifen
Rufen Sie das Aktualisierungsdatum der Python-Memorandum-Datei ab.
Übergeben Sie ein Array von PHP an PYTHON und führen Sie eine Numpy-Verarbeitung durch, um das Ergebnis zu erhalten
[Python] So entfernen Sie doppelte Werte aus der Liste
Die Wand beim Ändern des Django-Dienstes von Python 2.7 auf Python 3-Serie