【Opencv3+Python3入门(10)直方图绘制与直方图均衡化】

版权声明:本文为博主原创文章,转载时须注明出处 https://blog.csdn.net/KID_yuan/article/details/89495871

图像的直方图也是图像的一个重要的属性组成,通过分析直方图分布,可以初步大致推断图像的信息,另外通过直方图的一些计算,例如直方图匹配等,可以用于模板匹配和搜索等。除此之外,直方图均衡化也是对一幅图像进行对比度调整的重要方法。

## 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目标映像。

若要进行彩色图像多通道直方图均衡化,只需要将不同的通道单独传入进行处理后合并通道即可。

运行结果:

猜你喜欢

转载自blog.csdn.net/KID_yuan/article/details/89495871