直方图- 3:二维直方图
我们已经计算并绘制了一维直方图,因为我们只考虑一个特征,即像素的灰度强度值。但在二维直方图中,需要考虑两个特征,通常,它用于查找颜色直方图,其中两个要素是每个像素的色调和饱和度值。
使用函数<代码>简历。calcHist()> 代码,对于颜色直方图,我们需要将图像从BGR转换为HSV。(请记住,对于一维直方图,我们从BGR转换为灰度)。对于2 d直方图,其参数将修改如下:
-
<李>频道=[0,1]:因为我们需要同时处理H(色调色调)和S(饱和度饱和度)。李>
<李>垃圾箱=[180256]:180对应H, 256对应美国李>
<李>=(0180、0256)范围:色调值介于0到180之间,饱和度介于0到256之间。李>
进口cv2 进口numpy np 从matplotlib进口pyplot plt img=cv2.imread (“img.jpg”) cv2.COLOR_BGR2HSV hsv=cv2.cvtColor (img) 嘘=cv2。calcHist ([0, 1], (hsv), (180、256), [0, 180, 0, 256])
<代码> np.histogram2d()> 代码。(注意,对于一维直方图,我们使用<代码> np.histogram() 代码>)
代码如下:嘘,xbins ybins=np.histogram2d (h.ravel (), s.ravel (), [180256], [[0180], [0256]])
第一个参数是H平面,第二个是年代平面,第三个是每个垃圾箱的数量,第四个是它们的范围
方法- 1:使用<代码> cv.imshow() 代码>
我们得到的结果是一个大小为180 x256的二维数组。因此我们可以像使用cv.imshow()函数一样正常显示它们。它将是一个灰度图像,它不会告诉你什么颜色,除非你知道不同颜色的色调。
方法2:使用Matplotlib
我们可以使用<代码> matplotlib.pyplot.imshow() 代码>函数绘制具有不同颜色图的二维直方图。它让我们更好地了解不同的像素密度,但是,除非你知道不同颜色的色调值,否则这也不会让我们知道第一眼看到的是什么颜色。它简单而且更好。
代码:
进口cv2 进口numpy np 从matplotlib进口pyplot plt img=cv2.imread (“img6.png”) cv2.COLOR_BGR2HSV hsv=cv2.cvtColor (img) 嘘=cv2。calcHist ([0, 1], (hsv), [180256], [0180、0256]) plt。imshow(嘘,插值=白罱? plt.show ()
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。