python 计算并绘制灰度直方图

Posted 阳光玻璃杯

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 计算并绘制灰度直方图相关的知识,希望对你有一定的参考价值。


其灰度直方图为:

其灰度直方图为:

代码如下:


def calHistogram(img):
    if(len(img.shape) != 2):
        print("img size error")
        return None
    histogram = 
    for i1 in range(img.shape[0]):
        for i2 in range(img.shape[1]):
            if histogram.get(img[i1][i2]) is None:
                histogram[img[i1][i2]] = 0
            histogram[img[i1][i2]] += 1
    # normalize
    for key in histogram:
        histogram[key] = float(histogram[key]) / (img.shape[0]*img.shape[1])
    return histogram

def drawHistoGram(histogram):
    pyplot.figure()
    #设置x轴的最小值,最大值。y轴的最小值,最大值
    pyplot.axis([0, 256, 0, 1])
    #显示网格线
    pyplot.grid(True)
    #key正好就是灰度
    keys = histogram.keys()
    #value是灰度的像素数量,这里是归一化之后的
    values = histogram.values()
    #这里正式绘制直方图
    pyplot.bar(tuple(keys), tuple(values))
    pyplot.show()
def testHistogram():
    test = cv.imread("test2.jpg",0)
    histogram = calHistogram(test)
    drawHistoGram(histogram)
    cv.imshow("test",test)
    cv.waitKey(0)

testHistogram()    

以上是关于python 计算并绘制灰度直方图的主要内容,如果未能解决你的问题,请参考以下文章

Python绘制图像的灰度直方图累计直方图

Python图像处理丨如何调用OpenCV绘制直方图

python opencv实现绘制图像的灰度直方图

如何用DIB绘制8位的灰度图像?绘出的灰度图像为啥出现蓝色和红色?

Python从零到壹丨带你了解图像直方图理论知识和绘制实现

如何在 python 中绘制 300x300 RGB 图像的灰度值