1、代码有几个bug,cv2.drawContours函数返回值要注意
2、程序调用了DaSiamRPN跟踪网络,跟踪效果不错,fps也很高
3、代码如下
'''
读取视频、检测前景目标,调用DiameseRPN进行跟踪
'''
import cv2
import torch
import numpy as np
from os.path import realpath, dirname, join
from net import SiamRPNvot
from run_SiamRPN import SiamRPN_init, SiamRPN_track
from utils import get_axis_aligned_bbox, cxy_wh_2_rect
# load net
net = SiamRPNvot()
net.load_state_dict(torch.load(join(realpath(dirname(__file__)), 'SiamRPNVOT.model')))
net.eval().cuda()
def videoTrack():
video_path = " "
cap = cv2.VideoCapture(0)
ret,frame = cap.read()
fgbg = cv2.createBackgroundSubtractorMOG2()
startTrack = False
restartTrack = False
stopTrack = False
isTracking = False
while(ret):
#前景检测
fgmask = fgbg.apply(frame)
element = cv2.getStructuringElement(cv2.MORPH_RECT,(3,3))
#前景处理
fgmask = cv2.erode(fgmask,element)
masked = cv