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++源码以及原理本人还没有看完,等研究通了会出博文进行介绍。
- Windows下利用dlib19.2实现多目标追踪
- ubuntu下利用Dlib实现目标跟踪(下)——多目标跟踪
- windows下追踪路由
- ubuntu14.04 + dlib19.2
- OpenCV3.1+dlib19.2
- 基于高斯混合模型和卡尔曼滤波的多目标追踪方法(C++实现)
- WINDOWS下利用QOS实现流量控制
- Windows 7下追踪不到无线网络解决方法
- 2016追踪算法ASMS_Windows 下实现
- 【分享】多目标追踪学习笔记与心得(一)
- Linux下利用backtrace追踪函数调用堆栈
- 利用原始套接字实现tracert路由追踪
- 多目标
- windows下利用文件映射实现共享内存
- Windows下利用Javax.comm实现对串口的读写
- Windows 下利用MFC实现的中国象棋棋盘绘制程序
- Windows下利用thunk实现回调成员函数(1)
- Windows下 利用SVK实现不同Subversion仓库之间合并
- linux常用环境变量和c/c++头文件/库路径环境变量
- c++析构函数、虚析构函数、纯虚析构函数详解
- 【HTML5学习笔记】19:CSS文本样式 上
- CSS入门
- Plugin execution not covered by lifecycle configuration问题
- Windows下利用dlib19.2实现多目标追踪
- Linux--用shell脚本实现菲波那切数列
- 单点登录的三种实现方式
- Android 开发之 RecyclerView相关知识
- JMeter--HTTP(S) 测试脚本录制创建过程 ---上
- Joda-Time 操作常用时间函数
- 虚拟机可以ping同宿主机,宿主机ping不通虚拟机
- bootstrap尝试用法
- linux中crond服务与crontab用法详解