OpenCV-图像处理-颜色空间转换(物体跟踪)

  • 转换颜色空间

  常用转换方式:BGR<-->RGBBGR<-->Gray BGR<-->HSV

  函数:cv2.cvtColor(input_imageflag),其中 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)
View Code

  注意:OpenCV HSV 格式中, H(色彩/色度)的取值范围是 [0179]S(饱和度)的取值范围 [0255]V(亮度)的取值范围 [0255]。但是不同的软件使用的值可能不同。而一般的取值范围: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()

猜你喜欢

转载自www.cnblogs.com/bingma/p/11203066.html