#python-3.x #opencv #image-processing
#python-3.x #opencv #обработка изображений
Вопрос:
Я должен строить гистограммы на python без использования предопределенной функции, такой как cv2.calcHist () или np.histogram (). Я преобразовал все пиксели изображения в вектор, но мне нужна помощь с тем, как написать нашу собственную функцию для гистограммы?
Ответ №1:
Вот пример:
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()
Ответ №2:
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)