Гистограмма изображения не отображается - как это исправить? - PullRequest
0 голосов
/ 16 октября 2019

Я новичок в Python и пытаюсь создать функцию, которая вычисляет гистограмму изображения. Когда я запускаю функцию, она не показывает никаких ошибок, но вывод не является гистограммой, вместо этого я получаю массив и входное изображение.

Я попытался выполнить команду отдельно для графика. когда я делаю это, на рисунке это показано, но я все еще не понимаю гистограмму.

def image_hist ():

im = plt.imread('lena.png')
plt.imshow(im, cmap=plt.cm.gray)

ImageHistogram = np.zeros(256, dtype=np.float64)
PixelNum = im.shape
for i in range (PixelNum[0]):
    for j in range(PixelNum[1]):
        totalvalue = im[j,i]
        ImageHistogram[int(totalvalue*255)] += 1
return ImageHistogram


fig, ax = plt.subplots(1, figsize=(20, 10))
plt.xlabel("Value")
plt.ylabel("pixels Frequency")
plt.title("Histogram Image")
plt.plot(ImageHistogram)
plt.show()

1 Ответ

0 голосов
/ 07 ноября 2019

Попробуйте использовать библиотеку PIL и numpy следующим образом:

 import PIL
 import numpy as np

 im=Image.open('lena.png')
 a = np.array(im.getdata())  # Convert the image into a 2D-Array
 bins_hist = list(range(0,257))  # Number of greyvalues
 histogram = np.histogram(a, bins=bins_hist)
 counts = histogram[0]

 fig, ax1 = plt.subplots()
 color = 'tab:red'
 ax1.bar(np.arange(256), counts, color=color)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...