今天看opencv时学习了了一个识别色彩的函数。

代码如下:

font = cv2.FONT_HERSHEY_SIMPLEX
img = cv2.imread(filepath+file)
cimg = img
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)

# color range
lower_red1 = np.array([0, 43, 46])
upper_red1 = np.array([10, 255, 255])
lower_red2 = np.array([156, 45, 45])
upper_red2 = np.array([180, 255, 255])
lower_green = np.array([40, 50, 90])
upper_green = np.array([80, 255, 255])
# lower_yellow = np.array([15,100,100])
# upper_yellow = np.array([35,255,255])
lower_yellow = np.array([20, 150, 155])
upper_yellow = np.array([35, 255, 255])
mask1 = cv2.inRange(hsv, lower_red1, upper_red1)
mask2 = cv2.inRange(hsv, lower_red2, upper_red2)
maskg = cv2.inRange(hsv, lower_green, upper_green)
masky = cv2.inRange(hsv, lower_yellow, upper_yellow)
maskr = cv2.add(mask1, mask2)

使用array固定一个颜色的范围让他识别,起初对这三个参数不怎么了解,后来百度资料得到以下信息:

HSV(Hue,Saturation,Value)是根据颜色的直观特性由A.R.Smith在1978年创建的一种颜色空间,也称六角锥体模型(HexconeModel)。这个模型中颜色的参数分别是:色调(H),饱和度(S),亮度(V)。

色调H

用角度度量,取值范围为0°~360°,从红色开始按逆时针方向计算,红色为0°,绿色为120°,蓝色为240°。它们的补色是:黄色为60°,青色为180°,品红为300°;

饱和度S

取值范围为0.0~1.0,值越大,颜色越饱和。

亮度V

取值范围为0(黑色)~255(白色)。

RGB和CMY颜色模型都是面向硬件的,而HSV(Hue Saturation Value)颜色模型是面向用户的。

HSV模型的三维表示从RGB立方体演化而来。设想从RGB沿立方体对角线的白色顶点向 黑色顶点观察,就可以看到立方体的六边形外形。六边形边界表示色彩,水平轴表示纯度,明度沿垂直轴测量。

由此我也找到了一个有关颜色的参数表: