python+opencv 图像直方图(histogram)

和自甴很熟 提交于 2020-02-03 01:49:00

(个人理解,对于RGB图像,每个通道的像素值在0-255之间,共256个值,所以Bin的数目是256。加入图像是14位的,则图像一共有

个像素值。故一个Bin的大小是64,所以统计得到的直方图x轴是0-255,y轴是0-64。) 
import cv2 as cv
import numpy as np
from matplotlib import pyplot as plt


def plot_demo(image):
    #  ravel把出现的频次都统计出来,范围是0-256
    plt.hist(image.ravel(), 256, [0, 256])
    plt.show()


def image_hist(image):
    color = ('blue', 'green', 'red')
    for i, color in enumerate(color):
        hist = cv.calcHist([image], [i], None, [256], [0, 256])
        plt.plot(hist, color=color)
        plt.xlim([0, 256])
    plt.show()

src = cv.imread('C:/Users/Y/Pictures/Saved Pictures/demo.png')
cv.namedWindow('input image', cv.WINDOW_AUTOSIZE)
cv.imshow('input image', src)
image_hist(src)
cv.waitKey(0)
cv.destroyAllWindows()

原图像

plt.hist()绘制的直方图

三通道的直方图

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!