Advertisement

OpenCV 目标追踪

阅读量:

一、创建追踪器方法对象

复制代码
    import cv2
    import numpy as np
    OPENCV_OBJECT_TRACKERS = {
    "csrt": cv2.TrackerCSRT_create,
    "kcf":cv2.TrackerKCF_create,
    "boosting":cv2.TrackerBoosting_create,
    "mil":cv2.TrackerMIL_create,
    "tld":cv2.TrackerTLD_create,
    "medianflow":cv2.TrackerMedianFlow_create,
    "mosse":cv2.TrackerMOSSE_create
    }

二、实例化追踪器对象

复制代码
    # 实例化OpenCV的tracker
    trackers = cv2.MultiTracker_create()

三、视频基本处理方法

复制代码
    vs = cv2.VideoCapture("2.mp4")
    while True:
    # 取当前帧
    frame = vs.read()
    frame = frame[1]#读取一帧
    if frame is None:
        break
    (h,w) = frame.shape[:2]
    width = 600
    r = width/float(w)
    dim = (width,int(h*r))
    frame = cv2.resize(frame,dim)

四、追踪结果与区域绘制

复制代码
    #追踪结果
    (success,boxes) = trackers.update(frame)
    # 绘制区域
    for box in boxes:
        (x,y,h,w) = [int(v)for v in box]
        cv2.rectangle(frame,(x,y),(x+w,y+h),(0,255,0),2)
        
    cv2.imshow("Frame",frame)

五、选择目标ROI

复制代码
    key = cv2.waitKey(100)&0xFF  #退出视频
    if key == ord('s'):
        box = cv2.selectROI("Frame",frame,fromCenter=False,
                           showCrosshair=True)
        tracker = OPENCV_OBJECT_TRACKERS["medianflow"]()
        trackers.add(tracker,frame,box)
        
    elif key ==ord("d"):
        break

六、关闭视频

复制代码
    vs.release()
    cv2.destroyAllWindows()
在这里插入图片描述
在这里插入图片描述

全部评论 (0)

还没有任何评论哟~