Windows下利用dlib19.2实现多目标追踪

来源:互联网 发布:哪里买高仿手表知乎 编辑:程序博客网 时间:2024/06/04 19:55

最近一个项目需要用到目标追踪,用opencv中的Meanshift和Camshift实现了一下,效果一般,尤其在目标与背景的色差不是很大的情况下,效果很差,然后就去网上搜了一下相关的解决方法。GitHub上找到一个用dilib和opencv做的多目标追踪,下下来研究一下。
原作者代码GitHub链接https://github.com/eveningglow/multi-object-tracker

这里写图片描述

作者提示该工程要用到openCV3.0,dlib-19.3,visual studio 15 (c++11 is necessary)。因为dlib从19版本开始都是需要C++11标准的,所以编译它必须用VS2015,很不幸,VS2015又需要Windows10系统,所以,一直在使用Windows7和opencv2的我为了跑通这个工程可谓是披荆斩棘历尽艰辛啊。

dlib不像opencv有预编译版本,直接可以拿来用(其实opencv3没有x86版本导致我最终还是自己编译了一遍),从dlib官网
下下来的是源码,需要自己编译成lib文件。在本人编译过程中,dlib-19.3编译老是报错,所以就换成了19.2版本,用x64编译还是有报错,所以只能用win32编译,因为opencv3没有x86的预编译版本,所以我只好下载opencv3.10(3.1版本源码先前下载过,和3.0区别不大)源码编译来得所需的库文件。

编译opencv源码

关于opencv编译生成dll和lib文件网上已经有很多博客教程了,再次就不赘述了,提几个注意点吧

  • 注意编译时选VS2015版本

  • 用win32编译成x86版本(配合后面dlib编译成x86版本)

这里写图片描述

本人编译好的opencv3.1.0 VS2015 x86版本点此下载,如果不想自己编译可以拿来直接用。

编译dlib19.2

  • 源码下载下来后在根目录建立一个build文件夹,将CMakeLists.txt拖到Cmake中,build目录改成改成这个build文件夹,点击configure。

    这里写图片描述

  • 点击configure,直到所有的红色选项变成白色,然后点击generate生成VS工程,点击Open Project

  • 打开工程后用Win32重新生成解决方法,完成之后我们会发现在dlib-19.2\build\dlib\Debug里面就生成了dlib.lib文件

  • 在根目录下建立一个lib文件夹,将刚才生成的dlib.lib放到该文件夹

本人编译好的dlib19.2 VS2015 x86版本点此下载,如果不想自己编译可以拿来直接用。

配置库路径

先从https://github.com/eveningglow/multi-object-tracker
下下来多目标跟踪的工程代码。打开multi-object-tracker-master\tracker\vs_solution中的VS工程。

  • 在属性管理器中,在包含目录,引用目录,库目录中都添加dlib-19.2的路径(注意:是 ..\dlib-19.2而不是..\dlib-19.2\dlib)

    这里写图片描述

  • 将dlib-19.2\lib路径添加到链接器->附加库目录,在链接器->输入->附加依赖项中加入dlib.lib

  • opencv路径设置此处略过,注意配v14 x86版本。

  • 配置完路径后就可以直接生成解决方案了。没有碰到报错的话multi-object-tracker-master\tracker\vs_solution\Debug下会生成MultiObjectTracker.exe

多目标追踪

打开Windows的cmd(win+R,cmd)

这里写图片描述

先用鼠标框要跟踪的区域,如果框错按Esc撤回。

这里写图片描述

框完后按回车进行跟踪

这里写图片描述

可以发现跟踪效果很好,但是处理一帧所花的时间是很长的,在我的电脑上大概10秒一帧。

本文对如何在Windows下配置dlib的配置做了一下介绍,以及大概介绍了一下对多目标追踪的实现过程。至于该工程的C++源码以及原理本人还没有看完,等研究通了会出博文进行介绍。


原创粉丝点击