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()

主要修改:

  1. 使用 np.histogram() 函数计算彩色图像的直方图,返回值包括直方图和直方图的边界数组。

  2. 使用 plt.subplots() 函数创建子图,避免使用 plt.subplot() 函数。

  3. 显示灰度图像的直方图。

  4. 修改显示图像的颜色空间,使得显示的图像颜色正确。

  5. 修改图像显示的标题,使得显示的信息更加清晰。

Python OpenCV 彩色图像直方图计算与绘制

原文地址: https://www.cveoy.top/t/topic/jtf9 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录