如何绘制、计算直方图(基于python-opencv) - Go语言中文社区

如何绘制、计算直方图(基于python-opencv)


今天学习了一下如何在python-opencv下对直方图进行操作:

1 直方图的计算、绘制直方图

1.1 直方图的计算

主要用到的几个函数有cv2.calcHist(),np.histogram()

直方图的原理很简单,它的X轴是灰度值(0到255),y轴是图片中具有同一个灰度值的数目。直方图就是对图像的灰度分布进行一个统计。

所有的例子以这种图片为例:

统计图像的直方图的两种方法:

1.cv2.calcHist函数

img=cv2.imread('home'.jpg',0)
hist=cv2.calcHist([img],[0],None,[256],[0,256])
2.np.histogram函数

hist,bin=np.histogram(img.ravel(),256,[0,256])
1.2 直方图的绘制

import cv2
import numpy as np
from matplotlib import pyplot as plt

img=cv2.imread('qx16.jpg')
plt.hist(img.ravel(),256,[0,256])
plt.show()
这是直接用matplot里面的hist函数绘制并统计出直方图



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()
这是同时绘制多通道的(BGR)的直方图

2.绘制颜色空间的2D直方图

在彩色空间中我们需要考虑图像的颜色(Hue)和饱和度(Saturation),所以需要绘制2D直方图

hsv=cv2.cvtColor(img,cv2.COLOR_BGR2HSV)
hist=cv2.calcHist(hsv,[0,1],None,[180,256],[0,180,0,256])
plt.imshow(hist,interpolation='nearest')
plt.show()
先将图片转换成HSV空间,下列参数需要注意:

channels:[0,1]这里要同时处理H,S两个通道

bins=[180,256]H通道为180,S通道为256

range范围选择也变化了

最后结果:








版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/i_is_a_energy_man/article/details/78291670
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-03-01 21:00:29
  • 阅读 ( 1447 )
  • 分类:

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢