本文涉及图像直方图以及直方图均衡化:
代码如下:
#读取图片,cv2.IMREAD_GRAYSCALE可以只提取灰度信息
img = cv2.imread("colorCheck.jpg",cv2.IMREAD_GRAYSCALE)
#直方图均衡化,重点需要理解
img_eq=cv2.equalizeHist(img)
#计算直方图,使用mask统计感兴趣区域的直方图,注意[img]需要加[],
mask=np.zeros(img.shape,np.uint8)
mask[200:500,200:500]=255
hist_mask=cv2.calcHist([img],[0],mask,[256],[0,255])
hist=cv2.calcHist([img],[0],None,[256],[0,255])
hist_eq=cv2.calcHist([img_eq],[0],None,[255],[0,255])
#多格显示不同内容,注意imshow默认是RGB的,如果是gray或者BGR需要指定cmap才能正确显示
plt.subplot(2,2,1)
plt.imshow(img,cmap=plt.cm.gray),plt.axis("off")
plt.subplot(2,2,2)
plt.imshow(img_eq,cmap=plt.cm.gray),plt.axis("off")
plt.subplot(2,2,3)
plt.hist(img.ravel(),256)
plt.subplot(2,2,4)
plt.hist(img_eq.ravel(),256)
plt.show()