使用plt 将图像的h、s、v通道以直方图的形式显示出来及原图显示出来
时间: 2024-03-05 15:54:58 浏览: 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.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()` 函数将图像显示出来。
相关问题
对原图像进行局部直方图均衡化处理,显示结果图像及其直方图。
好的,我可以进行图像处理和显示,但我无法在此平台上直接显示图像。我可以提供Python代码,供您在本地环境中运行并查看结果。以下是实现该功能的Python代码:
```python
import cv2
import numpy as np
from matplotlib import pyplot as plt
# 读取原始图像
img = cv2.imread('image.jpg', 0)
# 应用CLAHE算法进行局部直方图均衡化
clahe = cv2.createCLAHE(clipLimit=2.0, tileGridSize=(8,8))
img_clahe = clahe.apply(img)
# 绘制原始图像和处理后的图像
plt.subplot(2,2,1), plt.imshow(img, cmap='gray')
plt.title('Original Image'), plt.xticks([]), plt.yticks([])
plt.subplot(2,2,2), plt.imshow(img_clahe, cmap='gray')
plt.title('CLAHE Image'), plt.xticks([]), plt.yticks([])
# 绘制原始图像和处理后的图像的直方图
plt.subplot(2,2,3), plt.hist(img.ravel(), 256, [0,256])
plt.title('Original Histogram'), plt.xlim([0,256])
plt.subplot(2,2,4), plt.hist(img_clahe.ravel(), 256, [0,256])
plt.title('CLAHE Histogram'), plt.xlim([0,256])
plt.show()
```
其中,`image.jpg`是您需要处理的原始图像文件名。运行代码后,将会显示两个子图:左上角为原始图像,右上角为经过CLAHE算法处理后的图像;左下角为原始图像的直方图,右下角为处理后图像的直方图。
注意:为了运行上述代码,您需要已经安装了OpenCV和Matplotlib库。
使用Jupyter提取原图hsv三通道中v通道的直方图,并进行直方图均衡化,展示直方图均衡化的结果
好的,我会尝试回答您的问题。
首先,您需要安装 `OpenCV` 和 `matplotlib` 库,可以使用以下命令进行安装:
```
!pip install opencv-python
!pip install matplotlib
```
接下来,您可以使用以下代码读取原图并提取 `v` 通道:
```python
import cv2
import matplotlib.pyplot as plt
# 读取原图
img = cv2.imread("your_image_path.jpg")
# 转换为 HSV 颜色空间
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
# 提取 V 通道
v_channel = hsv[:, :, 2]
```
然后,您可以使用以下代码绘制 `v` 通道的直方图并进行直方图均衡化:
```python
# 绘制原始直方图
plt.hist(v_channel.flatten(), 256, [0, 256])
plt.xlim([0, 256])
plt.show()
# 进行直方图均衡化
v_channel_eq = cv2.equalizeHist(v_channel)
# 绘制均衡化后的直方图
plt.hist(v_channel_eq.flatten(), 256, [0, 256])
plt.xlim([0, 256])
plt.show()
```
最后,您可以使用以下代码展示直方图均衡化的结果:
```python
# 将均衡化后的 V 通道替换原图中的 V 通道
hsv[:, :, 2] = v_channel_eq
# 将 HSV 颜色空间转换回 BGR 颜色空间
result = cv2.cvtColor(hsv, cv2.COLOR_HSV2BGR)
# 展示结果
plt.imshow(result)
plt.show()
```
请注意,您需要将 `your_image_path.jpg` 替换为您自己的图像路径。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)