VS2013+OpenCV3.0编译CMT跟踪算法
这个算法的全称是Clustering of Static-Adaptive Correspondences for Deformable Object Tracking,文章发表在CVPR2015上,官方的网址为:
http://www.gnebehay.com/cmt/ 这个作者就是OpenTLD的C++版本的作者,包括ROS版的OpenTLD也是基于他的代码改的。
-1. 下载源码,并且解压,我是解压到F盘根目录的。F:\CppMT-master
-2. 打开里面的fastcluster.cpp后,找到heapify()函数,修改成下面:
void heapify() {
// Arrange the indices I and R so that H[i] := A[I[i]] satisfies the heap
// condition H[i] < H[2*i+1] and H[i] < H[2*i+2] for each i.
//
// Complexity: Θ(size)
// Reference: Cormen, Leiserson, Rivest, Stein, Introduction to Algorithms,
// 3rd ed., 2009, Section 6.3 “Building a heap”
// t_index idx; 注释这里
int_fast32_t idx;//添加这句
for (idx=(size>>1); idx>0; ) {
--idx;
update_geq_(idx);
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
-3. 在F盘根目录下新建一个BuildCppMT文件夹,用来存放适合VS2013工程文件。
-4. 下载最新的CMake工具,https://cmake.org/download/ 我自己用的是CMake 3.4.0 RC
-5. 安装OpenCV,必须是2.4.8以上,我用的是3.0,最新版本3.1是不行的,个人觉得因为里面没有x86的库,如果你自己编译x86库就可能可以。因为OpenCV官网不翻墙是上不了的,所以我还是给出3.0的下载链接https://yunpan.cn/cqF2Eps8WApZS 访问密码 7df9
-6. 安装完OpenCV后,添加环境变量,下面的路径自己灵活变通,不要全抄。
在path环境变量里面添加:D:\OpenCV3.0\opencv\build\x86\vc12\bin
新建一个OpenCV_DIR变量,值为:D:\OpenCV3.0\opencv\build
- 1
- 2
-7. 打开CMake,然后配置如下图:
-8.点击Configure,选择VS2013编译器后,点击Finish,然后再点击一下Configure。如下图:
-9. 点击Generate生成工程文件。
-10. 用VS2013打开BuildCppMT文件里面的CMT.sln工程。在这里我们可以看到四种生成配置,四种生成配置最后都会生成cmt.lib静态库,记得是静态库,其实这四种四种生成配置实现的效果都是一样的,只是有的是为带输出调试的lib文件,有的是体积比较小的lib文件,所以你可以只编译Release就行了,下面就为每一种生成配置都单独编译一次。
- 选择Debug版本的配置。打开cmt工程的属性页面,按照图片设置:
然后点击[生成]-[生成解决方案],大概几十秒就看到文件夹里面有一个Debug的目录,里面就有cmt.lib文件。
- 选择MinSizeRel生成配置,同样来到cmt的属性页里面,修改运行库为/MTd,然后跟第一种编译方式一样。
- 选择Release生成配置,来到cmt的属性页面里面,修改运行库为/MT,然后编译。
- 选择RelWithDebInfo生成配置,来到cmt的属性页面里面,同样修改运行库为/MTd,然后编译。
-11.编译完成后就看到里面有四个文件夹对应四种生成。
这时候可以试试运行里面的cmt.exe这个demo,因为博主见不了人就不截图了~~~
转载自:https://blog.****.net/trustguan/article/details/51042558