Opencv二维直方图
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()
输出如下:
参考文献:
【1】Opencv中文文档;