二维直方图
目标
在本篇文章中,我们将学习查找和绘制2D直方图,包括以下内容:
- OpenCV中的二维直方图
- Numpy中的二维直方图
- 绘制二维直方图
- 示例补充
前言
在直方图板块的第一篇文章图像直方图的查找、绘制和分析中,我们计算并绘制了一维直方图, 之所以称为一维,是因为我们仅考虑一个特征,即像素的灰度强度值。 但是在二维直方图中,需要考虑两个特征,通常,它用于查找颜色直方图,其中两个特征是每个像素的色相和饱和度值。我们将尝试了解如何创建这种颜色直方图,它将有助于理解像直方图反向投影这样的更深入的内容。
1. OpenCV中的二维直方图
它非常简单,并且使用相同的函数cv.calcHist()进行计算。 对于颜色直方图,我们需要将图像从BGR转换为HSV。(请记住,对于一维直方图,我们从BGR转换为灰度)。对于二维直方图,其参数将进行如下修改:
- channel = [0,1],因为我们需要同时处理H和S平面。
- bins = [180,256] 对于H平面为180,对于S平面为256。
- range = [0,180,0,256] 色相值介于0和180之间,饱和度介于0和256之间。
演示代码1:
import numpy as np
import cv2 as cv
# 加载原始图像
img = cv.imread('./data/leuvenA.jpg')
# 显示原始图像
cv.imshow('img2', img)
# 转化为HSV
hsv = cv.cvtColor(img, cv.COLOR_BGR2HSV)
# 显示HSV图像
cv.imshow('hsv', hsv)
# cv.calcHist() 来查找整个图像的二维直方图
hist = cv.calcHist([hsv], [0, 1], None, [180, 256], [0, 180, 0, 256])
# 可调整窗口大小
cv.namedWindow('2Dhist_img', 0)
# 显示二维直方图
cv.imshow('2Dhist_img', hist) # 显示图像窗口较小,窗口可调整
cv.waitKey()




本文详细介绍了如何使用OpenCV和Numpy在Python中计算二维直方图,以及如何使用cv.imshow()和Matplotlib进行绘制。通过示例展示了颜色直方图在HSV空间中的应用,帮助理解直方图反向投影等高级概念。
最低0.47元/天 解锁文章
1448

被折叠的 条评论
为什么被折叠?



