как использовать python для построения гистограмм каждой полосы, но без использования предопределенных функций, таких как cv2.calcHist () или np.histogram () - PullRequest
0 голосов
/ 28 марта 2019

Я должен построить гистограммы в Python без использования предопределенной функции, такой как cv2.calcHist () или np.histogram (). Я прочитал все пиксели изображения в вектор, но мне нужна помощь, как написать нашу собственную функцию для гистограммы?

Ответы [ 2 ]

0 голосов
/ 28 марта 2019

Вот пример:

def cal_hist(gray_img):
    hist = np.zeros(shape=(256))
    (h,w) = gray_img.shape
    for i in range(w):
        for j in range(h):
            hist[gray_img[j,i]] += 1
    return hist

img = cv2.imread("1.jpg",0)

plt.plot(cal_hist(img))
plt.show()

enter image description here

0 голосов
/ 28 марта 2019
import numpy as np
import cv2

data = [1, 5, 3, 9 ,4] # fill in your data

size = 200, 300, 3
hist = np.zeros(size, dtype=np.uint8) + 255

interval = hist.shape[1] / (len(data) + 1)
width = interval * 0.7
max_height = hist.shape[0] * 0.9
max_data = max(data)

interval_count = 1
for value in data:
    height = max_height / max_data * value
    pt1 = (int(interval_count * interval - width / 2), int(hist.shape[0] - height))
    pt2 = (int(interval_count * interval + width / 2), int(hist.shape[0]))
    cv2.rectangle(hist, pt1, pt2, (255, 0, 0), -1)
    interval_count += 1

cv2.imwrite("hist.jpg", hist)

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...