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:

Antworten auf die Frage(2)

Ihre Antwort auf die Frage