【python opencv】二维直方图
我们计算并绘制了一维直方图。 之所以称为一维,是因为我们仅考虑一个特征,即像素的灰度强度值。 但是在二维直方图中,您要考虑两个特征。 通常,它用于查找颜色直方图,其中两个特征是每个像素的色相和饱和度值。我们将尝试了解如何创建这种颜色直方图,这对于理解诸如直方图反向投影之类的更多主题将很有用。 OpenCV中的二维直方图它非常简单,并且使用相同的函数cv.calcHist()进行计算。 对于颜色直方图,我们需要将图像从BGR转换为HSV。(请记住,对于一维直方图,我们从BGR转换为灰度)。对于二维直方图,其参数将进行如下修改:
现在检查以下代码: import numpy as np cv2 as cv img = cv.imread('home.jpg') hsv = cv.cvtColor(img,cv.COLOR_BGR2HSV) hist = cv.calcHist([hsv],[0,1],None,[180,256],256]) 原始图像: 处理之后: Numpy中的二维直方图Numpy还为此提供了一个特定的函数:np.histogram2d()。(记住,对于一维直方图我们使用了np.histogram())。 hsv =] hist,xbins,ybins = np.histogram2d(h.ravel(),s.ravel(),[[0,180],256]]) cv2_imshow(hist) 第一个参数是H平面,第二个是S平面,第三个是每个箱子的数量,第四个是它们的范围。 绘制二维直方图方法1:使用 cv.imshow()我们得到的结果是尺寸为 方法2:使用Matplotlib我们可以使用matplotlib.pyplot.imshow()函数绘制具有不同颜色图的2D直方图。它使我们对不同的像素密度有了更好的了解。但是,除非您知道不同颜色的色相值,否则乍一看并不能使我们知道到底是什么颜色。我还是更喜欢这种方法。它简单而更好。
考虑下面的代码: hsv =] ) plt.imshow(hist,interpolation = nearest) plt.show() 在直方图中,您可以在H = 100和S = 200附近看到一些较高的值。它对应于天空的蓝色。同样,在H = 25和S = 100附近可以看到另一个峰值。它对应于宫殿的黄色。您可以使用GIMP等任何图像编辑工具进行验证。 ? 参考: http://woshicver.com/FifthSection/4_10_3_%E7%9B%B4%E6%96%B9%E5%9B%BE3%EF%BC%9A%E4%BA%8C%E7%BB%B4%E7%9B%B4%E6%96%B9%E5%9B%BE/? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |