| --video videos/soccer_01.mp4 |
| --tracker kcf |

| import argparse |
| import time |
| import cv2 |
| import numpy as np |
| |
| |
| ap = argparse.ArgumentParser() |
| ap.add_argument("-v", "--video", type=str, |
| help="path to input video file") |
| ap.add_argument("-t", "--tracker", type=str, default="kcf", |
| help="OpenCV object tracker type") |
| args = vars(ap.parse_args()) |
| |
| |
| 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 |
| } |
| |
| |
| trackers = cv2.MultiTracker_create() |
| vs = cv2.VideoCapture(args["video"]) |
| |
| |
| 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, 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"): |
| |
| box = cv2.selectROI("Frame", frame, fromCenter=False, |
| showCrosshair=True) |
| |
| |
| tracker = OPENCV_OBJECT_TRACKERS[args["tracker"]]() |
| trackers.add(tracker, frame, box) |
| |
| |
| elif key == 27: |
| break |
| vs.release() |
| cv2.destroyAllWindows() |
- 执行:s + Enter -> 框选后 -> Enter
- 效果
点击查看详情

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
2022-03-04 实时视频通讯
2021-03-04 内部类