Opencv二维直方图

文章目录
1 理论
2 二维直方图
3 绘制二维直方图
1 理论
一维直方图中,仅考虑像素的灰度强度值;二维直方图中,则需要考虑像素的色相和饱和度值。

2 二维直方图
cv.calcHist():对于颜色直方图,需要将图像从RGB转换为HSV,且参数如下:
1)channel = [0, 1]:需要同时处理H和S平面;
2)bins = [182, 256]:分别对应于H、S平面;
3)range = [0, 180, 0, 256]:分别对应于色相值、饱和度。

import cv2 as cv

img = cv.imread(“1.jpg”)
hsv = cv.cvtColor(img, cv.COLOR_BGR2HSV)
hist = cv.calcHist([hsv], [0, 1], None, [180, 256], [0, 180, 0, 256])
print(hist)

3 绘制二维直方图
1)cv.imshow():绘制一张灰度图,除非知道不同颜色的色相值。

import cv2 as cv

img = cv.imread(“1.jpg”)
hsv = cv.cvtColor(img, cv.COLOR_BGR2HSV)
hist = cv.calcHist([hsv], [0, 1], None, [180, 256], [0, 180, 0, 256])
cv.imshow(“”, hist)
cv.waitKey()

2)matplotlib.pyplot.imshow():

import cv2 as cv
import matplotlib.pyplot as plt

img = cv.imread(“miao.png”)
hsv = cv.cvtColor(img, cv.COLOR_BGR2HSV)
hist = cv.calcHist([hsv], [0, 1], None, [180, 256], [0, 180, 0, 256])
plt.imshow(hist, interpolation=”nearest”)
plt.show()

输出如下:

%title插图%num
参考文献:
【1】Opencv中文文档;