如題,自動跟蹤多目標學習
uj5u.com熱心網友回復:
這個感覺有點困難。。。uj5u.com熱心網友回復:
正在研究,可惜還是不會,,,uj5u.com熱心網友回復:
,我也在搞opencv,一起學習交流啊uj5u.com熱心網友回復:
你好,做出來了嗎?uj5u.com熱心網友回復:
僅供參考:#-*- encoding=GBK -*-
#TODO
#在網頁http://answers.opencv.org/question/86188/kcf-tracker-in-python/
#搜索 MultiTracker
#多目標追蹤
#多目標跟蹤使用的是MultiTracker,
#如MultiTracker myTracker("KCF")
#注意兩點,添加目標用其成員函式myTracker.add(Mat src, Rect2d roi),
#獲得跟蹤結果使用myTracker.update(Mat src, vector targets),跟蹤結果的序號即vector的序號。
import numpy as np
import cv2
import sys
'''
if len(sys.argv) != 2:
print('Input video name is missing')
exit()
'''
A=2
print('Select 3 tracking targets')
cv2.namedWindow("tracking")
vfn="video2.mp4"
video = cv2.VideoCapture(vfn)
tracker = cv2.MultiTracker_create()
init_once = False
ok, frame=video.read()
if not ok:
print('Failed to read video')
exit()
frame = cv2.resize(frame, (0, 0), fx=1/A, fy=1/A)
bbox1 = cv2.selectROI('tracking', frame)
bbox2 = cv2.selectROI('tracking', frame)
bbox3 = cv2.selectROI('tracking', frame)
while video.isOpened():
ok, frame=video.read()
if not ok:
print('no frame to read')
break
frame = cv2.resize(frame, (0, 0), fx=1/A, fy=1/A)
if not init_once:
ok = tracker.add(cv2.TrackerKCF_create(), frame, bbox1)
ok = tracker.add(cv2.TrackerKCF_create(), frame, bbox2)
ok = tracker.add(cv2.TrackerKCF_create(), frame, bbox3)
init_once = True
ok, boxes = tracker.update(frame)
print(ok, boxes)
if ok:
for newbox in boxes:
p1 = (int(newbox[0]), int(newbox[1]))
p2 = (int(newbox[0] + newbox[2]), int(newbox[1] + newbox[3]))
cv2.rectangle(frame, p1, p2, (255,0,0),2)
cv2.imshow('tracking', frame)
k = cv2.waitKey(1)
else:
for newbox in boxes:
p1 = (int(newbox[0]), int(newbox[1]))
p2 = (int(newbox[0] + newbox[2]), int(newbox[1] + newbox[3]))
cv2.rectangle(frame, p1, p2, (0,0,255),2)
cv2.imshow('tracking', frame)
k = cv2.waitKey(0)
if k == 27 : break # esc pressed
cv2.destroyAllWindows()
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/64032.html
標籤:圖形處理/算法
