首页 > 编程笔记 > Python笔记 阅读:6

OpenCV calcHist()函数:计算直方图(附带实例)

在 OpenCV 中,封装了直方图的计算函数 calcHist(),该函数能够同时计算多个图像、多个通道、不同灰度范围的灰度直方图。

calcHist()函数声明如下:
calcHist(images, channels, mask, histSize, ranges[, hist[, accumulate]]) -> hist
各个参数的含义如下:
在 OpenCV 中,用 calHist() 函数得到直方图数据后就可以将其绘制出来了。

【实例 1】得到某图像的灰度直方图。
import cv2
import numpy as np
from matplotlib import pyplot as plt

img = cv2.imread('test.jpg',0)
plt.hist(img.ravel(),256,[0,256]);
plt.show()
一般使用 Matplotlib 绘制直方图。这里要提一下 matplotlib.pyplot.hist() 函数,该函数可以直接使用统计数据绘制直方图,统计函数为 calcHist() 或 np.histogram()。

运行工程,结果如下图所示:


当然,在使用颜色图像检索之类的方法时,我们需要的是 BGR 直方图,原理类似,统计时使用 cv2.calcHist() 函数。

【实例 2】绘制 BGR 直方图。
import cv2
import numpy as np
from matplotlib import pyplot as plt
img = cv2.imread('test.jpg',1)
color = ('b','g','r')
for i,col in enumerate(color):
    histr = cv2.calcHist([img],[i],None,[256],[0,256])
    plt.plot(histr,color = col)
    plt.xlim([0,256])
plt.show()
上述代码中演示了 calcHist() 函数的使用。运行工程,结果如下图所示:

相关文章