- 转换颜色空间
常用转换方式:BGR<-->RGB、BGR<-->Gray 和 BGR<-->HSV
函数:cv2.cvtColor(input_image, flag),其中 flag就是转换类型。
代码:
1 import cv2 2 import numpy as np 3 4 img=cv2.imread('../image/min.jpg') 5 6 # BGR转成RGB矩阵 7 img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) 8 9 # BGR转成GRAY矩阵 10 img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) 11 12 # BGR转成HSV矩阵 13 img = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
注意: 在 OpenCV 的 HSV 格式中, H(色彩/色度)的取值范围是 [0, 179],S(饱和度)的取值范围 [0, 255], V(亮度)的取值范围 [0, 255]。但是不同的软件使用的值可能不同。而一般的取值范围:H为0到360°,S为0到100%,V为0到255。
- 简单物体跟踪
利用HSV模式下的图像,提取某个特定颜色的物体(HSV颜色空间比BGR颜色空间更容易表示一个特定颜色)
1 import numpy as np
2 import cv2
3
4 # 捕获摄像头
5 cap = cv2.VideoCapture(0)
6
7 while(1):
8
9 # 获取每一帧
10 ret, frame = cap.read()
11
12 # 转换到HSV空间
13 hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
14
15 # 设定蓝色的阈值
16 lower_blue = np.array([110, 50, 50])
17 upper_blue = np.array([130, 255, 255])
18
19 # 根据阈值构建掩膜(在阈值内像素设置为255,否则为0)
20 mask = cv2.inRange(hsv, lower_blue, upper_blue)
21
22 res = cv2.bitwise_and(frame, frame, mask=mask)
23
24 cv2.imshow('frame', frame)
25 cv2.imshow('mask', mask)
26 cv2.imshow('res', res)
27 k = cv2.waitKey(5) & 0xFF
28 if k == 27:
29 break
30
31 cv2.destroyAllWindows()