Zeichnen Sie das Farbhistogramm des Bildes mit matplotlib
Ich versuche, ein Farbhistogramm eines Bildes zu erstellen. Ich benutze PIL zum Lesen von Bilddateien und versuche, dasselbe über matplotlib zu zeichnen.
im = Image.open(sys.argv[1])
w, h = im.size
colors = im.getcolors(w*h) #Returns a list [(pixel_count, (R, G, B))]
Aktualisieren: Nach einigem Ausprobieren zeichnet dieser Code das Histogramm, aber nicht die Farben! (Dauert mühsam lange verbraucht Tonnen von Speicher selbst für ein 320x480 JPEG)
for idx, c in enumerate(colors):
plt.bar(idx, c[0], color=hexencode(c[1]))
plt.show()
Woher,
def hexencode(rgb):
return '#%02x%02x%02x' % rgb
Bei der Ausführung verbraucht das Programm unendlich viel Speicher und es wird keine Anzeige bereitgestellt. Die Speicherauslastung des Betriebssystems stieg innerhalb weniger Minuten von <380 MB auf> 2,5 GB. Beitrag, bei dem ich die Ausführung abgebrochen habe. Wie kann ich das Problem lösen?
Hier ist ein Beispiel für ein Farbhistogramm eines Bildes mit dominanten Rottönen: