opencvhsv提取红色
时间: 2023-08-26 18:07:19 浏览: 59
在OpenCV中,可以使用HSV颜色空间来提取特定颜色的对象。下面是提取红色对象的基本步骤:
1. 将图像从BGR颜色空间转换为HSV颜色空间
2. 定义所需颜色的HSV范围
3. 对图像进行二值化处理,将所需颜色的像素设置为白色,其余像素设置为黑色
4. 对二值化后的图像进行形态学操作,以去除噪声并填充空洞
下面是一个示例代码,可以提取红色对象:
```python
import cv2
import numpy as np
# 读取图像
img = cv2.imread("test.jpg")
# 将图像从BGR颜色空间转换为HSV颜色空间
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
# 定义所需颜色的HSV范围
lower_red = np.array([0, 50, 50])
upper_red = np.array([10, 255, 255])
mask1 = cv2.inRange(hsv, lower_red, upper_red)
lower_red = np.array([170, 50, 50])
upper_red = np.array([180, 255, 255])
mask2 = cv2.inRange(hsv, lower_red, upper_red)
# 将两个掩码相加
mask = mask1 + mask2
# 对二值化后的图像进行形态学操作
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (5,5))
mask = cv2.morphologyEx(mask, cv2.MORPH_OPEN, kernel)
# 显示结果
cv2.imshow("Original Image", img)
cv2.imshow("Mask", mask)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在这个例子中,我们定义了两个HSV范围,分别对应于0-10和170-180度的红色。然后我们将两个掩码相加以获得最终的二值掩码。最后,我们对二值化后的图像进行了形态学开运算操作,以去除噪声并填充空洞。