import cv2
import numpy as np
def ImageHist(image, type): #定义方法
color = (255, 255, 255)
windowName = 'Gray'
if type == 31:
color = (255, 0, 0)
windowName = 'B Hist'
elif type == 32:
color = (0, 255, 0)
windowName = 'G Hist'
elif type == 32:
color = (0, 0, 255)
windowName = 'R Hist'
#计算直方图:1 图片, 2 通道, 3 模板, 4 直方图分多少分, 5 灰度值
hist = cv2.calcHist([image], [0], None, [256], [0, 0, 255, 0])
minV, maxV, minL, maxL = cv2.minMaxLoc(hist) #获得最大值最小值及其坐标
histImg = np.zeros([256, 256, 3], np.uint8)
for h in range(256):
intenNormal = int(hist[h]*256/maxV) #归一化
cv2.line(histImg, (h, 256), (h, 256-intenNormal), color)
cv2.imshow(windowName, histImg)
return histImg
img = cv2.imread('car.jpg', 1)
channels = cv2.split(img) #分解为RGB
for i in range(0, 3):
ImageHist(channels[i], 31 + i)
cv2.waitKey(0)
程序有问题,但是我一直没找出来,如哪位大佬看出来,请指正,多谢!!!
欢迎关注微信公众号“源起1024”或扫描下方二维码获取更多学习资源