1、读入指定彩色图像flower1,分别读取并显示R、G、B各层,用学习过的基于HSI的方法将图像中的花朵分割出来,并将分割结果进行显示。python代码
时间: 2024-03-23 09:40:02 浏览: 62
以下是Python代码实现:
```python
import cv2
import numpy as np
# 读入彩色图像
img = cv2.imread('flower1.jpg')
# 分离R、G、B各层
B, G, R = cv2.split(img)
# 显示R、G、B各层
cv2.imshow("Red", R)
cv2.imshow("Green", G)
cv2.imshow("Blue", B)
# 转换为HSI色彩空间
img_hsi = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
# 提取色相通道
H = img_hsi[:, :, 0]
# 提取饱和度通道
S = img_hsi[:, :, 1]
# 提取亮度通道
I = img_hsi[:, :, 2]
# 花朵在HSI空间中的颜色范围
lower = np.array([0, 30, 0])
upper = np.array([20, 255, 255])
# 二值化处理,将花朵部分变为白色,背景变为黑色
mask = cv2.inRange(img_hsi, lower, upper)
# 显示分割结果
cv2.imshow("Segmentation", mask)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
解释一下代码:
首先读入彩色图像 `flower1.jpg`,然后使用 `cv2.split()` 分离出 R、G、B 三个通道,分别显示出来,以便观察。
接着,使用 `cv2.cvtColor()` 将图像转换为 HSI 色彩空间,提取出色相、饱和度、亮度三个通道。
然后,我们需要确定花朵在 HSI 空间中的颜色范围,这里我们选择了色相在 0~20 之间、饱和度在 30 以上的像素作为花朵部分。
接下来,我们使用 `cv2.inRange()` 函数进行二值化处理,将花朵部分变为白色,背景变为黑色。
最后,将分割结果进行显示。
阅读全文