opencv中的DNN模块
目标跟踪
import time
import argparse
import cv2
import numpy as np
#跟踪算法
# "kcf": cv2.TrackerKCF_create() 效果最好
# "csrt": cv2.TrackerCSRT_create()
# "mil": cv2.TrackerMIL_create()
# "boosting": cv2.TrackerBoosting_create()
# "mosse": cv2.TrackerMOSSE_create()
# "medianflow": cv2.TrackerMedianFlow_create()
# "tld": cv2.TrackerTLD_create()
#实例化opencv的tracker
trackers = cv2.MultiTracker_create()
#导入视频
vs = cv2.VideoCapture('E:/soccer_01.mp4')
while True:
#取当前帧
frame = vs.read()
#(true,data)
frame = frame[1]
#如果结束了就break掉
if frame is None:
break
#resize每一帧
(h,w) = frame.shape[:2] #得到宽高
width = 600 #设置宽为600
r = width/float(w) #得到缩放比例
dim = (width,int(h*r)) #定义新图像宽高
frame = cv2.resize(frame,dim,interpolation = cv2.INTER_AREA) #设置新图像宽高
#追踪结果
(success,boxes) = trackers.update(frame)
#绘制区域
for box in boxes:
(x,y,w,h) = [int(v) for v in box]
cv2.rectangle(frame,(x,y),(x+w,y+h),(0,255,0),2)
#显示
cv2.imshow("frame",frame)
key = cv2.waitKey(100) & 0xFF
if key == ord('s'):
#选择一个区域,按s后按空格再次开始
box = cv2.selectROI('frame',frame,fromCenter=False,
showCrosshair=True)
#创建一个新的追踪器
tracker = cv2.TrackerMOSSE_create()
trackers.add(tracker,frame,box)
#退出
elif key == 27:
break
vs.release()
cv2.destroyAllWindows()
卷积神经网络