实时目标检测如RCNN,yolo,ssd等都是可行的解决方案,但对于工业目标检测方案落地,一些嵌入式系统架构的硬件性能不能达到这样的高性能计算要求,或者当需要对特定目标进行检测识别时,这时可以采取的方案是检测+跟踪。

不要惊奇我们常用的OpenCV中包含着8种独立的目标检测方法,可以在计算机视觉中进行应用。

OpenCV中的8种目标检测方法

1.BOOSTING Tracker

该算法是基于机器学习汇总我的Haar级联(Adaboost)算法,是一种较为落后的一种方法,比较的慢,性能也不是很好,主要用来做算法的比较和基准。(>opencv3.0.0)

2.MIL Tracker

比boosting具有更好的准确率,但是存在报错的几率。(>opencv3.0.0)

3.KCF Tracker

核相关滤波算法,比上述两种都要快,但是偶然因素下存在失效。(>opencv3.1.0)

4.CSRT Tracker

判别相关滤波算法,具有通道和空间可靠性,比KCF准确率更高,但是相对慢。(>opencv3.4.2)

5.MedianFlow Tracker

失效性能良好,然后如果目标变动过大,如移动过快,容易丢失目标。(>opencv3.0.0)

6.TLD Tracker

有一定的假正率,不推荐使用该种OpenCV目标跟踪方法。

7.MOSSE Tracker

非常非常快,但是准确率没有CSRT和KCF高,如果对帧率要求很高,这是可行的方法。

8.GOTURN Tracker

这种唯一一个使用深度学习的OpenCV的方法。需要额外的模型文件caffe网络结构文件caffemode+prototext,并且基于caffe框架。

先给建议,再给实操。

使用CSRT当需要非常高的跟踪准确率。并且可以容忍慢一些的帧率。

使用KCF,当需要较快的FPS,但同时能够容忍轻微弱的准确率。

使用MOSSE,当需要非常高的FPS。

opencv_object_tracker.py

from imutils.video import VideoSteram
from imutils.video import FPS
import argparse
import imutils
import time
import cv2#pip install --upgrade imutilsap = argparse.ArgumentParse()
ap.add_argument("-v", "--video", type=str, help="path to input video files"
ap.add_argument("-t", "--tracker", type=str, default="kcf", help="opencv object tracker type")
args = vars(ap.parse_args())(major, minor) = cv2.__version__.split(".")[:2]if int(majot) ==3 and int(minor) <3:tracker=cv2.Tracker_create(args["tracker"]).upper()
else:OPENCV_OBJECT_TRACKERS ={"csrt":cv2.TrackerCSRT_create,"kcf":cv2.TrckerCKF_create,"mil":cv2.TrckerMIL_create,"tld":cv2.TrckerTLD_create,"medianflow":cv2.TrackerMedianFlow_create,"mosse":cv2.TrackerMOSSE_create}tarcker = OPENCV_OBJECT_TRACKERS[args["tracker"]]()
initBB =Noneif not args.get("video", False):print("[INFO]starting video stream...")vs = VideoStream(src=0).start()time.sleep(1.0)else:vs = cv2.VideoCapture(arg["vide"])
fps=Nonewhile True:frame = vs.read()frame=frame[1] if args.get("video", False) else frameif frame is None:breakframe = imutils.resize(frame, width=500)(H, W) = frame.shape[:2]if intiBB is not None:if success:(x, y, w, h)=[int(v) for v in box]cv2.rectangle(frame, (x, y), (x+w, y+h), (0, 255,0),2)fps.update()fps.stop()info=[("Tracker", args["tracker"]),("Success", "Yes", if success else "No"),("FPS", "{:.2f}".format(fps.fps())),]for (i, (k, v)) in enumerate(info):text="{}:{}".format(k ,v)cv2.puttext(frame, text, (10, H - ((i*10) +20)), cv2.FONT_HERSHEY_SIMPLE, 0.6, (0,0,255),2)cv2.imshow("Frame", frame)key = cv2.waitKey(1) && oxffif key == ord("s"):initBB =cv2.selectROI("Frame", frame, fromCenter=False, showCrosshair=True)tracker.init(frame, initBB)fps == FPS().start()elif key == ord("q"):break
if not args.get("video", False):vs.stop()
else:vs.release()cv2.desrtoyAllWindows()

python opecv_object_tracking.py --video 1.mp4 --tracker csrt

Opencv Object Tracking【使用OpenCV目标跟踪模块】相关推荐

  1. Online Object Tracking Benchmark(OTB)目标跟踪系统评估方式

    主要涉及到一些评估方式的讲解: 评估数据集: OTB50和OTB100(OTB50这里指OTB-2013,OTB100这里指OTB-2015) Wu Y, Lim J, Yang M H. Onlin ...

  2. Object Tracking using OpenCV (C++/Python)(使用OpenCV进行目标跟踪)

    本博客翻译搬运自https://www.learnopencv.com/object-tracking-using-opencv-cpp-python,用于初入目标跟踪的新手学习,转贴请注明! 使用O ...

  3. UDT(【CVPR2019】Unsupervised Deep Tracking无监督目标跟踪)

    UDT是中科大.腾讯AI lab和上交的研究者提出的无监督目标跟踪算法.仔细阅读过这篇文章之后,写下一篇paper reading加深印象. 论文标题:Unsupervised Deep Tracki ...

  4. 基于opencv模板匹配的单目标跟踪

    基于模板的物体跟踪 模板匹配 核心函数 完整代码 效果展示 多目标检测 模板匹配 调用函数: cv.matchTemplate(image, templ, method, result=None, m ...

  5. [Tracking] KCF + KalmanFilter目标跟踪

    基于KCF和MobileNet V2以及KalmanFilter的摄像头监测系统 简介 这是一次作业.Tracking这一块落后Detection很多年了,一般认为Detection做好了,那么只要能 ...

  6. OpenCV 3 Tracking API目标跟踪学习笔记——定义、物体跟踪常用算法、demo

    今天开始接触目标跟踪 本文翻译自https://www.learnopencv.com/object-tracking-using-opencv-cpp-python/#opencv-tracking ...

  7. opencv动态目标跟踪学习总结

    用opencv实现对视频中动态目标的追踪 第一步,是要建立一个编程环境,然后加载opencv的库路径等等.具体步骤在 http://www.opencv.org.cn/ 的"安装" ...

  8. 目标跟踪之粒子滤波---Opencv实现粒子滤波算法

    目标跟踪学习笔记_2(particle filter初探1) 目标跟踪学习笔记_3(particle filter初探2) 前面2篇博客已经提到当粒子数增加时会内存报错,后面又仔细查了下程序,是代码方 ...

  9. OpenCV3学习(12.5) opencv实现粒子滤波目标跟踪

    OpenCV高版本已经把粒子滤波的CV方面的condensation算法给去掉了,以前学的condensation算法不能用C++开发还是只能用C版本,(OpenCV3学习(12.4) 粒子滤波Con ...

最新文章

  1. 【转】ibatis的简介与初步搭建应用
  2. 一、JVM及Java体系结构
  3. mybaits十六:使用choose标签实现分支选择
  4. boost::container实现从内存资源派生的测试程序
  5. SQLite Select 语句(http://www.w3cschool.cc/sqlite/sqlite-select.html)
  6. Exchange Server 2013 配置客户端访问
  7. 文字转wav_这6款超良心语音转文字工具,真让人省心!
  8. Oracle Study---Oracle 11g 不可见索引案例
  9. 【算法竞赛学习】心跳信号分类预测-特征工程
  10. 研究永中Office的LINUX postinst脚本,是用jar处理的
  11. OpenCV滤波器 龙门石窟篇【Python-Open_CV系列(九)】(均值滤波器、中值滤波器、高斯滤波器、双边滤波器)
  12. QQ音乐下载的flac文件转码mp3文件
  13. 罗马数字包含以下七种字符: `I, V, X, L,C,D M`
  14. Unity 事件番外篇:UnityEvent
  15. IOS 应用安全测试内容
  16. 天才小毒妃 第966章 不死不灭的痛苦
  17. 分享:从华为转正到离职
  18. SAP财务记账中的贸易伙伴Trading Partner简析
  19. “2012年全国职业院校技能大赛”高职组信息安全管理与评估赛项获奖名单
  20. 浅析SFX脚手架源码

热门文章

  1. 程序人生 - 公积金贷款额度是怎么计算的?
  2. Hadoop---(2)MapReduce(分布式计算编程模型)
  3. 源码圈内推信息整理(2018-03-30)
  4. 使用Phantom.js时报错
  5. 《高效时间管理》--司铭宇老师
  6. 【值传递和引用传递之外的第三种传值方式 - 传名参数】
  7. drwxr-xr-x 2 root root 4096 06-29 14:30 Test 分段解释
  8. (可下载)《中国城市数字经济发展报告》发布,北上深成第1梯队
  9. 批量给pdf添加目录(最完整详细方法 补充
  10. 韦森:哈耶克大战凯恩斯的论战(一)