一、颜色空间介绍 RGB 颜色空间是大家最熟悉的颜色空间,即三基色空间,任何一种颜色都可以由该三种 颜色混合而成。然而一般对颜色空间的图像进行有效处理都是在 HSV 空间进行的,HSV(色调 Hue,饱和度 Saturation,亮度 Value)是根据颜色的直观特性创建的一种颜色空间, 也称六角锥体模型。
为什么会选择 HSV 空间而不是 RGB 空间? 对于图像而言,识别相应的颜色在 RGB 空间、 HSV 空间或者其它颜色空间都是可行的。之所以选择 HSV,是因为 H 代表的色调基本上可以 确定某种颜色,再结合饱和度和亮度信息判断大于某一个阈值。而 RGB 由三个分量构成, 需要判断每种分量的贡献比例。即 HSV 空间的识别的范围更广,更方便。
二、三种颜色空间转换(Gray,RGB,HSV) 在OpenCV中有超过150种的颜色空间转换的方法,但是我们经常会用到的也就只有两种,即 BGR->Gray 和 BGR->HSV。注意 Gray 和 HSV 不可以互相转换。 颜色空间转换函数是:cv2.cvtColor(input_image, flag)
-
BGR->Gray: flag 就是 cv2.COLOR_BGR2GRAY
-
BGR->HSV: flag 就是 cv2.COLOR_BGR2HSV
三、OpenCV 中 HSV 颜色空间的取值范围:H [0, 179] S [0, 255] V [0, 255] 四、下面先来说一下指定颜色的识别,这里我们利用摄像头来识别黄色,然后把黄