追踪算法KCF体验
2016-07-23 10:22
369 查看
本文使用KCF的opencv版本实现。
对应论文:High-Speed Tracking with Kernelized Correlation Filters
编译环境:VS2015 + win7 64位
图:opencv下载说明
图:opencv_contrib下载说明
图:cmake下载说明
cmake下载的是免安装版本,解压缩之后打开cmake-gui就能直接运行。
将下载的3个文件安装/解压缩。
一.编译
打开bin目录下的cmake-gui.exe。
编译分为在x86和x64下2中编译方式,默认是使用x86编译。
1. source code路径选择opencv3.1下的sources文件夹,build路径可以自己新建一个文件夹进行存放,如下图:
2. 打开Tool---Configure,如果想生成x86下的库,则选择Visual Studio 14 2015;如果想生成x64下的库,则选择Visual Studio 14 2015 Win64。然后点击Finish。如下图:
等待一段时间,软件会自动配置。
3. 配置完成后,找到OPENCV_EXTRA_MODULES_PATH,将opencv_contrib的目录放进去。如下图,我的opencv_contrib路径为D:/opencv/opencv_contrib-master/modules
4. 点击Generate,等待配置完成。
2. 在解决方案资源管理器中,选中“解决方案‘OpenCV’”,右键-->重新生成解决方案。
3. 依旧是资源管理器中,找到CMakeTargets中的INSTALL,右键-->仅用于项目-->仅生成INSTALL。注:想要Debug版(格式为opencv_xxxx310d.lib)的和Release版(格式为opencv_xxxx310.lib)的lib的话,分别选择Debug和Release以后,生成两遍就可以了。完成后,D:/OpenCV3.1/sources/newBulid/install下会有很多东西。
2. 新建cpp源文件。
3. 配置包含目录
我的是D:\opencv\opencv310\sources\newBulid\install\include
D:\opencv\opencv310\sources\newBulid\install\include\opencv
D:\opencv\opencv310\sources\newBulid\install\include\opencv2
如下图:
4. 配置库目录
我的是D:\opencv\opencv310\sources\newBulid\install\x86\vc14\lib
D:\opencv\opencv310\sources\newBulid\install\x86\vc14\staticlib
如下图:
5. 配置依赖项。
由于生成的依赖项太多,要是把每个lib一个一个写上去,很麻烦,有一种简便的方法,即,路径+*.lib,比如我的即为:
D:\opencv\opencv310\sources\newBulid\install\x86\vc14\lib\*.lib
D:\opencv\opencv310\sources\newBulid\install\x86\vc14\staticlib\*.lib
如下图
6. 以上是win32(x86)Debug配置方法,其他模式(x64、Release)配置方法类似。
注意:修改std::string video ="E:\\demo1.avi";这条语句中的视频路径即可。
运行之后,首先框出物体,然后按下空格或者回车,系统便开始跟踪
最后效果如下图:
注:编译opencv比较麻烦,建议使用这个版本的KCF:https://github.com/hjl240/KCF-Tracking
对应论文:High-Speed Tracking with Kernelized Correlation Filters
编译环境:VS2015 + win7 64位
相关软件下载安装
需要下载opencv3.10,opencv_contrib和cmake-gui。图:opencv下载说明
图:opencv_contrib下载说明
图:cmake下载说明
cmake下载的是免安装版本,解压缩之后打开cmake-gui就能直接运行。
将下载的3个文件安装/解压缩。
一.编译
打开bin目录下的cmake-gui.exe。
编译分为在x86和x64下2中编译方式,默认是使用x86编译。
1. source code路径选择opencv3.1下的sources文件夹,build路径可以自己新建一个文件夹进行存放,如下图:
2. 打开Tool---Configure,如果想生成x86下的库,则选择Visual Studio 14 2015;如果想生成x64下的库,则选择Visual Studio 14 2015 Win64。然后点击Finish。如下图:
等待一段时间,软件会自动配置。
3. 配置完成后,找到OPENCV_EXTRA_MODULES_PATH,将opencv_contrib的目录放进去。如下图,我的opencv_contrib路径为D:/opencv/opencv_contrib-master/modules
4. 点击Generate,等待配置完成。
Visual Studio 2015编译
1. 找到之前新建的newBuild目录,打开新生成的OpenCV.sln。2. 在解决方案资源管理器中,选中“解决方案‘OpenCV’”,右键-->重新生成解决方案。
3. 依旧是资源管理器中,找到CMakeTargets中的INSTALL,右键-->仅用于项目-->仅生成INSTALL。注:想要Debug版(格式为opencv_xxxx310d.lib)的和Release版(格式为opencv_xxxx310.lib)的lib的话,分别选择Debug和Release以后,生成两遍就可以了。完成后,D:/OpenCV3.1/sources/newBulid/install下会有很多东西。
配置VS2015
1. 新建win32控制台项目。2. 新建cpp源文件。
3. 配置包含目录
我的是D:\opencv\opencv310\sources\newBulid\install\include
D:\opencv\opencv310\sources\newBulid\install\include\opencv
D:\opencv\opencv310\sources\newBulid\install\include\opencv2
如下图:
4. 配置库目录
我的是D:\opencv\opencv310\sources\newBulid\install\x86\vc14\lib
D:\opencv\opencv310\sources\newBulid\install\x86\vc14\staticlib
如下图:
5. 配置依赖项。
由于生成的依赖项太多,要是把每个lib一个一个写上去,很麻烦,有一种简便的方法,即,路径+*.lib,比如我的即为:
D:\opencv\opencv310\sources\newBulid\install\x86\vc14\lib\*.lib
D:\opencv\opencv310\sources\newBulid\install\x86\vc14\staticlib\*.lib
如下图
6. 以上是win32(x86)Debug配置方法,其他模式(x64、Release)配置方法类似。
测试KCF跟踪算法
在上面的工程中添加cpp源文件,并输入如下代码:#include <opencv2/core/utility.hpp> #include <opencv2/tracking.hpp> #include <opencv2/videoio.hpp> #include <opencv2/highgui.hpp> #include <iostream> #include <cstring> using namespace std; using namespace cv; int main() { // declares all required variables //! [vars] Rect2d roi; Mat frame; //! [vars] // create a tracker object Ptr<Tracker> tracker = Tracker::create("KCF"); //! [create] // set input video //! [setvideo] std::string video = "E:\\demo1.avi"; VideoCapture cap(video); //! [setvideo] // get bounding box //! [getframe] cap >> frame; //! [getframe] //! [selectroi]选择目标roi以GUI的形式 roi = selectROI("tracker", frame); //! [selectroi] //quit if ROI was not selected if (roi.width == 0 || roi.height == 0) return 0; // initialize the tracker //! [init] tracker->init(frame, roi); //! [init] // perform the tracking process printf("Start the tracking process\n"); for (;; ) { // get frame from the video cap >> frame; // stop the program if no more images if (frame.rows == 0 || frame.cols == 0) break; // update the tracking result //! [update] tracker->update(frame, roi); //! [update] //! [visualization] // draw the tracked object rectangle(frame, roi, Scalar(255, 0, 0), 2, 1); // show image with the tracked object imshow("tracker", frame); //! [visualization] //quit on ESC button if (waitKey(1) == 27) break; } return 0; }
注意:修改std::string video ="E:\\demo1.avi";这条语句中的视频路径即可。
运行之后,首先框出物体,然后按下空格或者回车,系统便开始跟踪
最后效果如下图:
注:编译opencv比较麻烦,建议使用这个版本的KCF:https://github.com/hjl240/KCF-Tracking
相关文章推荐
- (2) java项目中用redis
- 基于多种服务的地理位置查询系统
- 产品经理和程序员的爱恨情仇
- 是网络直播延时(1):起播延时及优化
- 数据结构之图的深度优先遍历和广度优先遍历
- LUA学习笔记(第18-20章)
- jsp传参 servlet接收中文乱码问题的解决方法
- 基于MVC+EasyUI的Web开发框架经验总结(11)--使用Bundles处理简化页面代码
- CentOs6.5 yum安装lnmp环境
- Python 获得命令行参数的方法
- H5学习之3 拖拽元素 放置元素
- 杭电ACM--与进制有关的oj题
- LUA学习笔记(第18-20章)
- 信息安全管理(1):组织的三个层面
- Java 中的 static 使用之静态方法
- JavaSE学习笔记之-----异常处理
- 动态规划算法
- Leetcode: N-Queens II
- 在CentOS64位下 编译程序
- Struts2支持的结果类型