Wykreśl histogram kolorów obrazu za pomocą matplotlib
Próbuję wygenerować histogram kolorów obrazu. Używam PIL do odczytywania plików graficznych i próbuję wykreślić to samo za pomocą matplotlib.
im = Image.open(sys.argv[1])
w, h = im.size
colors = im.getcolors(w*h) #Returns a list [(pixel_count, (R, G, B))]
Aktualizacja: Po kilku próbach i błędach kod ten przedstawia histogram, ale nie kolory! (Zajmuje dużo czasu, zużywając mnóstwo pamięci nawet przy 320 x 480 jpeg)
for idx, c in enumerate(colors):
plt.bar(idx, c[0], color=hexencode(c[1]))
plt.show()
Gdzie,
def hexencode(rgb):
return '#%02x%02x%02x' % rgb
Podczas wykonywania program zaczyna konsumować nieskończoną pamięć i nie jest wyświetlany żaden ekran. Wykorzystanie pamięci systemu operacyjnego wyniosło od <380 MB do> 2,5 GB w ciągu kilku minut; post, który zakończyłem egzekucją. Jak mogę rozwiązać problem?
Oto przykład kolorowego histogramu obrazu z dominującymi odcieniami czerwieni: