使用plt 将图像的h、s、v通道及原图显示出来
时间: 2024-02-08 12:03:13 浏览: 27
好的,以下是代码实现:
```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.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
plt.title('Original Image')
# 显示 H 通道
plt.subplot(222)
plt.imshow(h, cmap='gray')
plt.title('H Channel')
# 显示 S 通道
plt.subplot(223)
plt.imshow(s, cmap='gray')
plt.title('S Channel')
# 显示 V 通道
plt.subplot(224)
plt.imshow(v, cmap='gray')
plt.title('V Channel')
plt.show()
```
其中,`cv2.split()` 函数用于将图像的 H、S、V 通道分离出来,`plt.imshow()` 函数中的 `cmap='gray'` 参数用于将通道显示为灰度图像,最后使用 `plt.show()` 函数将图像显示出来。
相关问题
使用plt 将图像的h、s、v通道以直方图的形式显示出来及原图显示出来
好的,以下是代码实现:
```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()` 函数将图像显示出来。
使用plt 将图像的hsv空间及原图显示出来
好的,以下是代码实现:
```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)
# 显示原图
plt.subplot(121)
plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
plt.title('Original Image')
# 显示 HSV 图像
plt.subplot(122)
plt.imshow(hsv)
plt.title('HSV Image')
plt.show()
```
其中,`cv2.cvtColor()` 函数用于将图像从 BGR 空间转换为 HSV 空间,`plt.subplot()` 函数用于显示子图,`plt.imshow()` 函数用于显示图像,最后使用 `plt.show()` 函数将图像显示出来。