OpenCV-Python : 直方图

时间:2019-04-16 12:41:53   收藏:0   阅读:305

啥叫直方图

直方图简单来说就是图像中每个像素值的个数统计,比如一副灰度图中像素值为0的有多少个,1的有多少个...

技术分享图片

在计算直方图之前,先了解几个术语:

计算直方图

OpenCV和Numpy中提供了计算直方图的函数,我们对比一下他们的性能

OpenCV中直方图计算

在OpenCV中使用 cv2.calcHist(images,channels,mask,histSize,ranges) 计算,其中:

start = cv2.getTickCount()

img = cv2.imread(hist.jpg, 0)

hist = cv2.calcHist([img], [0], None, [256], [0, 256])

end = cv2.getTickCount()

print((end - start) / cv2.getTickFrequency())

Numpy中直方图计算

也可用Numpy的函数计算,使用 ravel() 函数 将二维矩阵展平变成一维数组,

hist, bins = np.histogram(img.ravel(), 256, [0, 256])

还有一种更高效的的方式:

hist = np.bincount(img.ravel(), minlength=256)

绘制直方图

其实Matplotlib自带了一个计算并绘制直方图的功能,不需要用到上面的函数

plt.hist(img.ravel(), 256, [0, 256])
plt.show()

 

原文:https://www.cnblogs.com/gezhuangzhuang/p/10716047.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!