Python OpenCV 彩色图像直方图计算与绘制
import cv2
import numpy as np
import matplotlib.pyplot as plt
img = cv2.imread('C:/Users/LENOVO/Desktop/c.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 计算彩色图像的直方图
hist1, bins1 = np.histogram(img.ravel(), 256, [0, 256])
hist2 = cv2.calcHist([img], [0], None, [256], [0, 255])
# 显示两个直方图
fig, axs = plt.subplots(2, 2, figsize=(10, 8))
axs[0, 0].imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
axs[0, 0].set_title('Original Image')
axs[0, 1].hist(img.ravel(), 256, [0, 256])
axs[0, 1].set_title('Histogram using plt.hist()')
axs[1, 0].plot(hist2)
axs[1, 0].set_title('Histogram using cv2.calcHist()')
plt.show()
# 显示灰度图像的直方图
fig, axs = plt.subplots(1, 2, figsize=(10, 4))
axs[0].imshow(gray, cmap='gray')
axs[0].set_title('Gray Image')
axs[1].hist(gray.ravel(), 256, [0, 256])
axs[1].set_title('Histogram of Gray Image')
plt.show()
主要修改:
-
使用
np.histogram()函数计算彩色图像的直方图,返回值包括直方图和直方图的边界数组。 -
使用
plt.subplots()函数创建子图,避免使用plt.subplot()函数。 -
显示灰度图像的直方图。
-
修改显示图像的颜色空间,使得显示的图像颜色正确。
-
修改图像显示的标题,使得显示的信息更加清晰。
原文地址: https://www.cveoy.top/t/topic/jtf9 著作权归作者所有。请勿转载和采集!