OpenTLD配置VS2010+OpenCV2.4,无须CMake

有很多大牛已经写过OpenTLD在VS中的配置,但是有些细节让我等小弱不甚明白,所以写这篇文章。

OpenTLD在VS2010和OpenCV2.4中的配置,OpenCV2.4是exe版本的,直接解压得到,大小约为2.29G,已经测试过,该方法也可以在OpenCV2.2运行;VS2010安装了SP1,单是在没有SP1版本的情况下依旧可以运行。OpenTLD是AlanTorresC++实现的OpenTLD zip

1、下载软件

  下载OpenCV-2.4.0,双击解压到C:\OpenCV2.4。

  下载VS2010,安装。

2、配置OpenCV环境变量

计算机->(右键)属性->高级系统设置->高级(标签)->环境变量->(双击)path(用户,系统里面的path任选其一)->在变量值里面添加

C:\OpenCV2.4\build\x86\vc10\bin
C:\OpenCV2.4\build\common\tbb\ia32\vc10

3、配置工程的opencv依赖(每次新建工程都要重新配置,要执行此步骤请先跳到第4步建立工程)

1)、项目(菜单项)->…属性->VC++目录:需要配置“包含目录”和“库目录”两项。

2)、配置“包含目录”项:添加以下四行,最后一行是tld中自带的include,也要加进去。

C:\OpenCV2.4\build\include
C:\OpenCV2.4\build\include\opencv
C:\OpenCV2.4\build\include\opencv2
E:\leProjects\tld\tld\include

3)、配置“库目录”项:添加行

C:\OpenCV2.4\build\x86\vc10\lib

4)、配置连接器:项目(菜单项)->…属性->连接器->输入->附加依赖项

针对debug配置添加以下库:

opencv_calib3d240d.lib
opencv_contrib240d.lib
opencv_core240d.lib
opencv_features2d240d.lib
opencv_flann240d.lib
opencv_gpu240d.lib
opencv_highgui240d.lib
opencv_imgproc240d.lib
opencv_legacy240d.lib
opencv_ml240d.lib
opencv_objdetect240d.lib
opencv_ts240d.lib
opencv_video240d.lib

如果是release配置则添加:

opencv_calib3d240.lib
opencv_contrib240.lib
opencv_core240.lib
opencv_features2d240.lib
opencv_flann240.lib
opencv_gpu240.lib
opencv_highgui240.lib
opencv_imgproc240.lib
opencv_legacy240.lib
opencv_ml240.lib
opencv_objdetect240.lib
opencv_ts240.lib
opencv_video240.lib

4、用VS2010新建控制台工程测试:

OpenTLD在VS2010编译运行包括如下步骤:

  • 新建空工程(我是vs2010),取名TLD,并将解压缩下include的文件导入到TLD头head file中;并将解压缩下src的文件导入到TLD头sorcefile中。
  • round错误;解决办法:改成cvRound
  • 编译成功后,运行,摄像头一直亮着,将run_tld.cpp中的 capture.open(0)注释掉;
  • 看了之后,明白了原来运行需要传递参数。见下面cmd命令:
     -p parameters.yml -s datasets\01_david\david.mpg -b datasets\01_david\init.txt –tl
  • TLD::bbPoints函数调用的ceil和floor函数强制把参数类型转换为double。
  • TLD::clusterBB函数中,vs不支持这种动态数组分配。
    float L[c-1]; //Level
    int nodes[c-1][2];
    int belongs[c];
  • 改成指针和动态分配内存
    float *L = new float [c-1]; //Level
    int **nodes = new int *[c-1];
    for(int i = 0; i < 2 ;i ++)
    nodes[i] = new int [c-1];
    int *belongs = new int [c];
  • 记得在函数末释放分配的内存,有两个return的地方,这两个地方之前需要加上这一段。
    delete [] L;
    L = NULL;
    for (int i = 0; i < 2; ++i)
    {
    delete [] nodes[i];
    nodes[i] = NULL;
    }
    delete []nodes;
    nodes = NULL;
    delete [] belongs;
    belongs = NULL;

注意:第一个视频运行起来貌似有问题,可以改换其他组的视频。

可以做的事情:摆脱opencv的函数库,和加入多线程、directx、cpu增强指令集以及gpu的支持。以提高程序的执行效率。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值