python机器识别追踪_多目标追踪器:用OpenCV实现多目标追踪(C++/Python)

本文介绍了如何使用OpenCV的MultiTracker API进行多目标追踪,详细讲解了创建单目标追踪器、读取视频帧、定位物体、初始化多目标追踪器以及更新追踪器并展示结果的步骤。提供了C++和Python的实现代码,并讨论了多目标追踪的重要性及其应用场景。
摘要由CSDN通过智能技术生成

原标题:多目标追踪器:用OpenCV实现多目标追踪(C++/Python)

MultiTracker : Multiple Object Tracking using OpenCV (C++/Python)

翻译 | 燕婕 校对 | 酱番梨 整理 | 菠萝妹

https://www.learnopencv.com/multitracker-multiple-object-tracking-using-opencv-c-python/

在本文中,我们将谈到如何用 OpenCV 的多目标追踪API,通过使用 MultiTracker 类来实现。我们将分享用 C++ 和用 Python 实现的代码。

在我们深入探讨细节之前,请检查下边列出来的之前的关于目标追踪的帖子,理解用 OpenCV 实现的单目标追踪器的基本原理。

用 OpenCV 实现目标追踪

GOTURN: 基于深度学习的目标追踪

为什么我们需要多目标追踪

大多数计算机视觉和机器学习的入门者都学习目标识别。如果你是一个初学者,你可能会思考我们到底为什么需要目标追踪。我们为什么不能只是在每一帧检测目标?

然我们来探索追踪很有用的几个原因。

首先,当视频的一帧中有多个目标(这里指人)时,追踪帮助建立帧之间的目标同一性。

第二,在一些情况下,目标检测可能失败但是仍有可能追踪目标,因为追踪考虑到目标在前一帧中的位置和外观。

第三,一些追踪算法是非常快的,因为他们做局部搜索而非全局搜索。所以通过每隔 n 帧做目标检测并在中间的帧做目标追踪,我们的系统可以获得很高的帧速。

所以,为什么不在第一次检测后无限期地跟踪这个对象呢?一个追踪算法有时可能会丢掉它所追踪的目标的轨迹。例如,当目标的移动太大,一个追踪算法可能不能保持一直追踪。所以现实中许多应用将检测和追踪一起使用。

在这个教程中,我们将只关注追踪这部分,我们将通过在对象周围放置一个边界框来指定想要跟踪的对象。

多目标追踪:OpenCV 的多目标追踪器

OpenCV 中的 MultiTracker 类提供了多目标追踪的实施方法。他是一个简单的实施方法因为他独立地处理被追踪的目标,不需要在多个被追踪对象之间做任何优化。

让我们一步步查看代码,学习我们如何用 OpenCV 的多目标追踪 API。

下载代码

为了能容易地跟着这个教程学习,请点击下面的按钮,下载代码。代码是免费的!

代码下载链接:https://bigvisionllc.leadpages.net/leadbox/143948b73f72a2%3A173c9390c346dc/5649050225344512/

第一步:创建单目标追踪器

一个多目标追踪器是由一系列简单的单目标追踪器组成的。一开始,我们先定义一个函数,用追踪器类型作为输入并创建一个追踪器对象。OpenCV 有八个不同的追踪器类型:BOOSTING, MTL, KCF, TLD, MEDIANFLOW, GOTURN, MOSSE, CSRT.

如果你想用 GOTURN 追踪器,请确保阅读这篇文章并下载caffe模型。

在下面的代码中,给出追踪器类别的名字,我们返回追踪器对象。这个追踪器会用于多目标追踪器。

Python

from__future__ importprint_function

importsys

importcv2

fromrandom importrandint

trackerTypes = ['BOOSTING', 'MIL', 'KCF','TLD', 'MEDIANFLOW', 'GOTURN', 'MOSSE', 'CSRT']

defcreateTrackerByName(trackerType):

# Create a tracker based on tracker name

iftrackerType == trackerTypes[0]:

tracker = cv2.TrackerBoosting_create()

eliftrackerType == trackerTypes[1]:

tracker = cv2.TrackerMIL_create()

eliftrackerType == trackerTypes[2]:

tracker = cv2.TrackerKCF_cre

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值