用 OpenCV 实现八种不同的目标跟踪算法

1、BOOSTING Tracker

和Haar cascades(AdaBoost)背后所用的机器学习算法相同,但是距其诞生已有十多年了。这一追踪器速度较慢,并且表现不好,但是作为元老还是有必要提及的。(最低支持OpenCV 3.0.0)


2、MIL Tracker

比上一个追踪器更精确,但是失败率比较高。(最低支持OpenCV 3.0.0)


3、KCF Tracker

比BOOSTING和MIL都快,但是在有遮挡的情况下表现不佳。(最低支持OpenCV 3.1.0)


4、CSRT Tracker

比KCF稍精确,但速度不如后者。(最低支持OpenCV 3.4.2)


5、MedianFlow Tracker

在报错方面表现得很好,但是对于快速跳动或快速移动的物体,模型会失效。(最低支持OpenCV 3.0.0)


6、TLD Tracker

我不确定是不是OpenCV和TLD有什么不兼容的问题,但是TLD的误报非常多,所以不推荐。(最低支持OpenCV 3.0.0)


7、MOSSE Tracker

速度真心快,但是不如CSRT和KCF的准确率那么高,如果追求速度选它准没错。(最低支持OpenCV 3.4.1)


8、GOTURN Tracker

这是OpenCV中唯一一深度学习为基础的目标检测器。它需要额外的模型才能运行,本文不详细讲解。(最低支持OpenCV 3.2.0)

我个人的建议:

如果追求高准确度,又能忍受慢一些的速度,那么就用CSRT
如果对准确度的要求不苛刻,想追求速度,那么就选KCF
纯粹想节省时间就用MOSSE

从OpenCV 3开始,目标检测器得到了快速发展,下表总结了不同版本的OpenCV中可适用的追踪器:

开始动手

想要用OpenCV进行目标追踪,首先打开一个新文件,将它命名为opencv_object_tracker.py,然后插入以下代码:

#import the necessary packages
from imutils.video import VideoStream
from imutils.video import FPS
import argparse
import imutils
import time
import cv2

然后开始分析命令行参数:

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())

我们的命令行参数包括:

--video:到达输入视频文件的替代路线。如果该参数失效,那么脚本将会使用你的网络摄像头。
--tracker:假设默认追踪器设置的是kcf,一整列可能的追踪器代码表示下一个代码块或下方的部分。

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值