python opencv 绘制并显示图像的灰度直方图
时间: 2023-10-18 12:21:33 浏览: 202
OpenCV图像灰度直方图
可以使用 OpenCV 中的 `calcHist` 函数来计算图像的灰度直方图,然后使用 Matplotlib 绘制并显示直方图。以下是一个示例代码:
```python
import cv2
import matplotlib.pyplot as plt
# 读取图像
img = cv2.imread('image.png', cv2.IMREAD_GRAYSCALE)
# 计算直方图
hist = cv2.calcHist([img], [0], None, [256], [0, 256])
# 绘制直方图
plt.plot(hist)
# 显示图像和直方图
plt.subplot(121), plt.imshow(img, cmap='gray')
plt.subplot(122), plt.plot(hist)
plt.xlim([0, 256])
plt.show()
```
在上面的代码中,`cv2.imread` 函数读取灰度图像,并使用 `cv2.IMREAD_GRAYSCALE` 参数将其转换为灰度图像。然后,`cv2.calcHist` 函数计算图像的灰度直方图。该函数的第一个参数是图像,第二个参数是通道索引,这里我们只计算单通道的直方图,因此为 `[0]`。第三个参数是掩膜图像,这里我们不使用掩膜,因此为 `None`。第四个参数是直方图的大小,这里我们使用 `256`,表示将灰度值分为 `256` 个区间。最后一个参数是灰度值的范围,这里我们使用 `[0, 256]`,表示灰度值的范围为 `0` 到 `255`。
绘制直方图时,我们使用 Matplotlib 的 `plot` 函数。然后使用 `plt.subplot` 函数将图像和直方图显示在同一个窗口中。`plt.xlim` 函数用于设置直方图的 x 轴范围,这里我们将其设置为 `[0, 256]`,表示灰度值的范围为 `0` 到 `255`。最后,使用 `plt.show` 函数来显示窗口。
阅读全文