图像的直方图也是图像的一个重要的属性组成,通过分析直方图分布,可以初步大致推断图像的信息,另外通过直方图的一些计算,例如直方图匹配等,可以用于模板匹配和搜索等。除此之外,直方图均衡化也是对一幅图像进行对比度调整的重要方法。
## 10,绘制图像直方图
import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt
def image_Hist(image):
colors=('blue','green','red')
for i,color in enumerate(colors):
hist=cv.calcHist([image],[i],None,[256],[0,256])
plt.plot(hist,color=color)#此处设置线的颜色为colors里面的颜色
plt.xlim([0,256])
plt.title("imageHist")
plt.show()
def image_EqualizeHist(image):
#对图像直方图进行均衡化处理
#equlizeHist只能处理单通道图像
grayImage=cv.cvtColor(image,cv.COLOR_BGR2GRAY)
dstImage=cv.equalizeHist(grayImage)
cv.imshow("dstImage",dstImage)
src=cv.imread('F:\OutputResult\SrcImage\saber18.jpg')
print(src.shape)
cv.imshow("Saber",src)
image_Hist(src)
image_EqualizeHist(src)
cv.waitKey(0)
cv.destroyAllWindows()
函数说明:
cv.calcHist(images, channels, mask, histSize, ranges[, hist[, accumulate]])
images:输入图像,写程序时必须加括号即[images]
channels:处理的通道,也必须加括号即[channel]
mask:直方图的模板区域,默认None即计算整幅图像的直方图。
histSize:直方图格子间隔的宽度大小。
ranges:直方图横轴范围。
运行结果:
cv.equalizeHist(src,[,dst])
参数src :源8位单通道图像。
输出参数:大小和类型相同的param dst目标映像。
若要进行彩色图像多通道直方图均衡化,只需要将不同的通道单独传入进行处理后合并通道即可。
运行结果: