使用plt 将图像的h、s、v通道以直方图的形式显示出来及原图显示出来
时间: 2024-03-05 07:54:58 浏览: 70
jupyter 使用Pillow包显示图像时inline显示方式
好的,以下是代码实现:
```python
import cv2
import matplotlib.pyplot as plt
import numpy as np
# 读取图像
img = cv2.imread('image.jpg')
# 将图像转换为 HSV 空间
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
# 分离通道
h, s, v = cv2.split(hsv)
# 绘制直方图
plt.subplot(221)
plt.hist(h.ravel(), 256, [0, 256])
plt.title('H Channel Histogram')
plt.subplot(222)
plt.hist(s.ravel(), 256, [0, 256])
plt.title('S Channel Histogram')
plt.subplot(223)
plt.hist(v.ravel(), 256, [0, 256])
plt.title('V Channel Histogram')
# 显示原图
plt.subplot(224)
plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
plt.title('Original Image')
plt.show()
```
其中,`plt.hist()` 函数用于绘制直方图,`ravel()` 函数用于将通道转换为一维数组,最后使用 `plt.show()` 函数将图像显示出来。
阅读全文