opencv基于MultiTracker的多目标跟踪
背景——为何需要目标跟踪
在视频帧中检测到多个对象时,跟踪有助于跨帧确定对象的身份。
在某些情况下,目标检测可能会失败但仍可能跟踪对象,因为跟踪考虑前一帧中对象的位置和外观。
跟踪算法非常快,因为它们进行本地搜索而不是全局搜索。我们可以通过每第n帧执行目标检测并在中间帧中跟踪对象来为我们的系统获得非常高的性能。
由于复杂的实际情况,跟踪和目标检测需要相结合,通常会在目标跟踪一段时间后再次目标检测。
代码
OpenCV中的多目标跟踪器MultiTracker类提供了多目标跟踪的实现。
但是这仅仅是一个初步的实现,因为它只处理跟踪对象,而不对被跟踪对象进行任何优化。
'''
CSRT:高准确度但是速度慢
KCF:速度快精度略低
MOSSE:纯粹节省时间
'''# 三个目标进行跟踪
import cv2
print('Select 3 tracking targets')
cv2.namedWindow("tracking")
camera = cv2.VideoCapture('./images/vtest.avi')
tracker = cv2.MultiTracker_create()
init_once = Falseok, image = camera.read()
if not ok:print('Failed to read video')exit()bbox1 = cv2.selectROI('tracking', image)
bbox2 = cv2.selectROI('tracking', image)
bbox3 = cv2.selectROI('tracking', image)while camera.isOpened():ok, image = camera.read()if not ok:print('no image to read')breakif not init_once:ok = tracker.add(cv2.TrackerMIL_create(), image, bbox1)ok = tracker.add(cv2.TrackerMIL_create(), image, bbox2)ok = tracker.add(cv2.TrackerMIL_create(), image, bbox3)init_once = Trueok, boxes = tracker.update(image)print(ok, boxes)for newbox in boxes:p1 = (int(newbox[0]), int(newbox[1]))p2 = (int(newbox[0] + newbox[2]), int(newbox[1] + newbox[3]))cv2.rectangle(image, p1, p2, (200,0,0))cv2.imshow('tracking', image)k = cv2.waitKey(1)if k == 27:break # esc pressed
效果
opencv基于MultiTracker的多目标跟踪相关推荐
- Python,OpenCV基于支持向量机SVM的手写数字OCR
Python,OpenCV基于支持向量机SVM的手写数字OCR 1. 效果图 2. SVM及原理 2. 源码 2.1 SVM的手写数字OCR 2.2 非线性SVM 参考 上一节介绍了基于KNN的手写数 ...
- OpenCV基于均值漂移的跟踪的实例(附完整代码)
OpenCV基于均值漂移的跟踪的实例 OpenCV基于均值漂移的跟踪的实例 OpenCV基于均值漂移的跟踪的实例 #include "opencv2/core/utility.hpp&quo ...
- OpenCV基于LeNet-5和连接组件分析的数字识别的实例(附完整代码)
OpenCV基于LeNet-5和连接组件分析的数字识别的实例 OpenCV基于LeNet-5和连接组件分析的数字识别的实例 OpenCV基于LeNet-5和连接组件分析的数字识别的实例 #includ ...
- OpenCV使用MultiTracker
OpenCV使用MultiTracker OpenCV使用MultiTracker 目标 源代码 解释 创建MultiTracker对象 选择多个对象 将跟踪的对象添加到MultiTracker 获得 ...
- OpenCV基于ARM的Linux系统的交叉编译
OpenCV基于ARM的Linux系统的交叉编译 基于ARM的Linux系统的交叉编译 先决条件 获取OpenCV源代码 获取最新的稳定OpenCV版本 从Git存储库中获取最新的OpenCV 构建O ...
- AI论文解读:基于Transformer的多目标跟踪方法TrackFormer
摘要:多目标跟踪这个具有挑战性的任务需要同时完成跟踪目标的初始化.定位并构建时空上的跟踪轨迹.本文将这个任务构建为一个帧到帧的集合预测问题,并提出了一个基于transformer的端到端的多目标跟踪方 ...
- Opencv基于改进VGG19的表情识别系统(源码&Fer2013&教程)
1.研究背景 在深度学习中,传统的卷积神经网络对面部表情特征的提取不充分以及计算参数量较大的问题,导致分类准确率偏低.因此,提出了一种基于改进的VGG19网络的人脸表情识别算法.首先,对数据进行增强如 ...
- C++ OpenCV 基于HSV颜色分割区域、获取目标
C++ OpenCV 基于HSV颜色分割区域.获取目标 读取图片 // An highlighted block Mat img = imread("E:/Data_image/螺丝-线1/ ...
- OpenCV基于颜色信息的车牌提取
OpenCV基于颜色信息的车牌提取 车牌提取的方法主要有:基于纹理特征分析法.基于数学形态学分析法.基于边缘检测的定位分析法.基于小波分析的定位分析法.基于彩色信息的定位分析法,本文采用的方法是基于颜 ...
- OpenCV基于形状的模板匹配
OpenCV基于形状的模板匹配 引言 基于形状的匹配算法 具体代码 KcgMatch.h KcgMatch.cpp main.cpp 匹配的结果 引言 在OpenCV中有个用于模板匹配的基本函数mat ...
最新文章
- quartz定时任务开发cron常用网站
- 动态链表增删改查及排序功能
- Vista操作系统评估参考资料
- 分析 linux 日志文件,linux精讲|操作系统常见日志文件分析
- java自定义菜单跳转页面_微信公众号开发 自定义菜单跳转页面并获取用户信息实例详解...
- 《团队名称》第八次团队作业:Alpha冲刺day5
- 网络软文发布软件_星浪中合网软文写出爆款汽车营销软文的特点是什么?
- ******“伪装”七夕传情网页
- 【前端进阶之路】内存基本知识
- 计算机二级java有用吗_计算机二级java含金量怎么样
- vscode 字体颜色变得花里胡哨的
- Excel函数实战技巧精粹(一)函数前瞻
- regester正则用法_Regester下载
- git/gitgub
- 如何去掉word文档右侧的竖线
- Matlab论文插图绘制模板第60期—瀑布图(Waterfall)
- 30. Python------(面向对象练习)搬家具
- 学习笔记:光电耦合器PC817
- Android类似微信详细地址选择(高德地图)
- Python实现画图软件功能