使用OpenCV和Python绘制图像直方图
import cv2
import matplotlib.pyplot as plt
# 加载图像
img = cv2.imread('C:/Users/LENOVO/Desktop/c.jpg')
# 将图像转换为灰度
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 计算彩色图像的直方图
hist1 = plt.hist(img.ravel(), 256)
hist2 = cv2.calcHist([img], [0], None, [256], [0, 255])
# 显示图像和直方图
plt.subplot(2, 2, 1)
plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB)) # 将BGR转换为RGB以供matplotlib显示
plt.title('彩色图像')
plt.subplot(2, 2, 2)
plt.hist(img.ravel(), 256)
plt.title('彩色图像直方图')
plt.subplot(2, 2, 3)
plt.imshow(gray, cmap='gray')
plt.title('灰度图像')
plt.subplot(2, 2, 4)
plt.plot(hist2)
plt.title('灰度图像直方图')
plt.show()
在这段代码中,我们首先使用cv2.imread()加载图像。然后,我们使用cv2.cvtColor()将图像转换为灰度。接下来,我们使用plt.hist()和cv2.calcHist()计算彩色和灰度图像的直方图。最后,我们使用plt.imshow()、plt.hist()和plt.plot()显示图像和它们的直方图。
注意:
- 我们使用
plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))来显示彩色图像,因为OpenCV以BGR顺序加载图像,而matplotlib以RGB顺序显示图像。 plt.subplot()函数用于在一个图形中创建多个子图。cmap='gray'参数用于以灰度显示灰度图像。
这段代码将帮助你使用OpenCV和Python计算和绘制图像直方图。通过分析直方图,你可以深入了解图像的像素强度分布。
原文地址: https://www.cveoy.top/t/topic/jtgF 著作权归作者所有。请勿转载和采集!