环境:Python3.8 和 OpenCV
内容:图像二维直方图的绘制
import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt
if __name__ == '__main__':
# 读取原图
img_lenna = cv.imread('lenna.png')
# 绘制直方图
plt.hist(img_lenna.ravel(), 256, [0, 256])
plt.show()
# 转换到HSV颜色空间
img_hsv = cv.cvtColor(img_lenna, cv.COLOR_BGR2HSV)
# HSV的二维直方图
hist_hsv = cv.calcHist([img_hsv], [0, 1], None, [180, 256], [0, 180, 0, 256])
# 取对数以增加对比度
hist_hsv = np.log(1 + hist_hsv)
# 显示二维直方图
plt.imshow(hist_hsv, cmap='jet')
plt.xlabel("S")
plt.ylabel("H")
plt.show()