Opencv hsv色域
时间: 2023-12-24 09:53:22 浏览: 223
opencv基于HSV颜色用途,颜色追踪
OpenCV中的HSV色彩空间是一种更为自然的颜色表示方式,它是从RGB空间通过非线性变换得到的。HSV表示三个颜色属性:色相(H),饱和度(S)和亮度(V)。
H(色相)表示颜色在色轮上的位置,取值范围为[0, 179]。在OpenCV中,H值的范围是[0, 180],因此需要将H值除以2。
S(饱和度)表示颜色的纯度,取值范围为[0, 255]。S值越大,颜色越纯,S值越小,颜色越灰。
V(亮度)表示颜色的亮度,取值范围为[0, 255]。V值越大,颜色越亮,V值越小,颜色越暗。
在OpenCV中,可以使用cv2.cvtColor()函数将图像从BGR空间转换为HSV空间,例如:
```
import cv2
# 读取图像
img = cv2.imread('image.jpg')
# 将图像从BGR空间转换为HSV空间
hsv_img = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
```
对于HSV空间中的颜色分割、目标检测等任务,可以使用H和S通道进行操作。例如,以下代码使用H和S通道将图像中的红色部分提取出来:
```
# 设置红色颜色范围
lower_red = np.array([0, 50, 50])
upper_red = np.array([10, 255, 255])
lower_red2 = np.array([170, 50, 50])
upper_red2 = np.array([180, 255, 255])
# 提取红色部分
mask1 = cv2.inRange(hsv_img, lower_red, upper_red)
mask2 = cv2.inRange(hsv_img, lower_red2, upper_red2)
mask = cv2.bitwise_or(mask1, mask2)
# 显示提取结果
cv2.imshow('red', mask)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
阅读全文