对特定颜色的追踪是基于颜色空间的应用,其原理呢是类似于二值化,显示某一范围内的数值,(基于hsv)。
下面是代码演示:
import cv2
import numpy as np
capture = cv2.VideoCapture('E:\python\VID_20180522_132108.mp4')#读取视频
while True:
ret, frame = capture.read()#读取视频的一帧
if ret == False:
break
frame = cv2.resize(frame,(640,350))#改变每一帧图像的宽和高
hsv = cv2.cvtColor(frame,cv2.COLOR_BGR2HSV)#转变成hsv
lower_hsv = np.array([35,43,45])
upper_hsv = np.array([77,255,255])#范围
mask = cv2.inRange(hsv,lower_hsv,upper_hsv)
dst = cv2.bitwise_and(frame,frame,mask=mask)#提取特定颜色
cv2.imshow('video',frame)
cv2.imshow('mask',mask)
cv2.imshow('dst',dst)
c = cv2.waitKey(40)
if c ==27:
break
显示效果:
下面是基于经验获得的各种颜色的范围: