标题:OpenCV HSV颜色识别及HSV基本颜色分量范围
介绍
OpenCV是一个强大的计算机视觉库,可以用于图像处理、模式识别、机器人视觉等领域,其中HSV颜色空间被广泛应用于颜色检测和跟踪。HSV颜色空间由三个分量组成:色调(Hue)、饱和度(Saturation)和亮度(Value),通过调整颜色分量的范围可以实现各种不同的颜色识别。本文将简单介绍OpenCV HSV颜色识别及HSV基本颜色分量范围的方法和实现。
HSV颜色空间
HSV颜色空间是一种基于颜色感知的颜色模型,由色调、饱和度和亮度三个分量组成。HSV颜色空间的优点是更符合人类感知的方式来描述颜色,而不是以一定的RGB值来描述颜色,同时可以非常方便地对颜色进行调整和筛选。
HSV颜色空间中的三个分量的取值范围如下:
- 色调(Hue):0-179,表示颜色的范围,取值0为红色,取值60为绿色,取值120为蓝色。
- 饱和度(Saturation):0-255,表示颜色的纯度,取值越大,颜色越纯,取值越小,颜色越淡。
- 亮度(Value):0-255,表示颜色的亮度,取值越大,颜色越亮,取值越小,颜色越暗。
HSV颜色识别方法
OpenCV提供了基于HSV颜色空间的颜色识别方法,可以通过设置HSV分量的取值范围实现相应颜色的筛选。具体实现方法如下:
- 将彩色图像转换为HSV颜色空间。
import cv2
img = cv2.imread('image.jpg')
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
- 筛选特定颜色的像素点。
import numpy as np
lower_range = np.array([h_min, s_min, v_min])
upper_range = np.array([h_max, s_max, v_max])
mask = cv2.inRange(hsv, lower_range, upper_range)
其中,h_min, s_min, v_min, h_max, s_max, v_max分别表示HSV颜色空间的三个分量的最小值和最大值,取值范围为0-179,0-255,0-255。
- 将筛选出的像素点变为白色,其他像素点变为黑色。
result = cv2.bitwise_and(img, img, mask=mask)
HSV基本颜色分量范围
下面给出常见HSV颜色的分量范围:
颜色 | H_min | S_min | V_min | H_max | S_max | V_max |
---|---|---|---|---|---|---|
红色 | 0 | 43 | 46 | 10 | 255 | 255 |
橙色 | 11 | 43 | 46 | 25 | 255 | 255 |
黄色 | 26 | 43 | 46 | 34 | 255 | 255 |
绿色 | 35 | 43 | 46 | 77 | 255 | 255 |
青色 | 78 | 43 | 46 | 99 | 255 | 255 |
蓝色 | 100 | 43 | 46 | 124 | 255 | 255 |
紫色 | 125 | 43 | 46 | 155 | 255 | 255 |
示例
下面给出两个HSV颜色识别的示例。
示例1:识别红色
import cv2
import numpy as np
# 读取图片
img = cv2.imread('image.jpg')
# 转换为HSV颜色空间
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
# 筛选红色
lower_range = np.array([0, 43, 46])
upper_range = np.array([10, 255, 255])
mask = cv2.inRange(hsv, lower_range, upper_range)
# 像素颜色替换
result = cv2.bitwise_and(img, img, mask=mask)
# 显示结果
cv2.imshow('result', result)
cv2.waitKey(0)
cv2.destroyAllWindows()
示例2:识别绿色
import cv2
import numpy as np
# 读取图片
img = cv2.imread('image.jpg')
# 转换为HSV颜色空间
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
# 筛选绿色
lower_range = np.array([35, 43, 46])
upper_range = np.array([77, 255, 255])
mask = cv2.inRange(hsv, lower_range, upper_range)
# 像素颜色替换
result = cv2.bitwise_and(img, img, mask=mask)
# 显示结果
cv2.imshow('result', result)
cv2.waitKey(0)
cv2.destroyAllWindows()
总结
OpenCV提供了基于HSV颜色空间的颜色识别方法,可以通过设置HSV分量的取值范围实现相应颜色的筛选,对于图像处理和机器视觉应用非常实用。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:OpenCV HSV颜色识别及HSV基本颜色分量范围 - Python技术站