当前位置: 首页 > 工具软件 > libtld > 使用案例 >

TLD目标跟踪算法matlab版本代码调试(包括数据集及摄像头)

郎灿
2023-12-01

TLD matlab版本源码链接:https://github.com/zk00006/OpenTLD

我所用的配置:64位win10 + visual studio 2015 + opencv 341 + matlab r2017b 

源码下载之后直接run会发现报错:lk未定义,这是因为lk为mex文件夹下的.cpp文件,并不能在matlab里直接调用,解决方法如下:

1.在命令窗口运行mex -setup,如下:

>> mex -setup
MEX 配置为使用 'Microsoft Visual C++ 2015 (C)' 以进行 C 语言编译。
警告: MATLAB C 和 Fortran API 已更改,现可支持
     包含 2^32-1 个以上元素的 MATLAB 变量。您需要
     更新代码以利用新的 API。
     您可以在以下网址找到更多的相关信息:
     http://www.mathworks.com/help/matlab/matlab_external/upgrading-mex-files-to-use-64-bit-api.html。

要选择不同的语言,请从以下选项中选择一种命令:
 mex -setup C++ 
 mex -setup FORTRAN

点击mex -setup C++

2.打开compile.m文件,将源代码中的:

include = ' -Ic:\OpenCV2.2\include\opencv\ -Ic:\OpenCV2.2\include\';
libpath = 'C:\OpenCV2.2\lib\';

改为自己的路径,例如我的是:

include = ' -IE:\opencv\opencv\build\include\opencv\  -IE:\opencv\opencv\build\include\opencv2\ -IE:\opencv\opencv\build\include\';
libpath = 'E:\opencv\opencv\build\x64\vc14\lib\';

3.进入mex文件夹下的lk.cpp, fern.cpp,bb_overlap.cpp,注释掉以下几行代码:

#ifdef _CHAR16T

#define CHAR16_T

#endif

4.将 lk.cpp 里面的

cvCalcOpticalFlowPyrLK( IMG[J], IMG[I], PYR[J], PYR[I], points[1], points[2], nPts, cvSize(win_size,win_size), Level, 0 , 0, cvTermCriteria(CV_TERMCRIT_ITER|CV_TERMCRIT_EPS,20,0.03), CV_LKFLOW_INITIAL_GUESSES | CV_LKFLOW_PYR_A_READY | CV_LKFLOW_PYR_B_READY ); 

改为:

cvCalcOpticalFlowPyrLK( IMG[J], IMG[I], PYR[J], PYR[I], points[1], points[2], nPts, cvSize(win_size,win_size), Level, status , 0, cvTermCriteria(CV_TERMCRIT_ITER|CV_TERMCRIT_EPS,20,0.03), CV_LKFLOW_INITIAL_GUESSES | CV_LKFLOW_PYR_A_READY | CV_LKFLOW_PYR_B_READY );

 即将源代码中的0改为status。

5.运行complite.m文件,出现"min","max"标识符找不到的错误

在显示错误的文件中,即bb_overlap.cpp文件中,加上#include <minmax.h>头文件,再次运行complite.m,编译成功

6.运行run_TLD.m即可出现对数据集中视频序列的跟踪。

7.如需要用摄像头完成图像采集,首先修改修改run_TLD.m的

opt.source = struct('camera',1,'input','_input/','bb0',[])

8.检查一下自己的matlab里面是否装有camera,在命令行运行:

>> info=imaqhwinfo

info = 

  包含以下字段的 struct:

    InstalledAdaptors: {'dcam'  'winvideo'}
        MATLABVersion: '9.3 (R2017b)'
          ToolboxName: 'Image Acquisition Toolbox'
       ToolboxVersion: '5.3 (R2017b)'

则可以看到电脑适配器和matlab相应信息,若 InstalledAdaptors:为空,则没有camera,需要安装:

1)在matlab菜单的附加功能中点击获取硬件支持包,搜索DCAM Hardware,点击安装,中间需要登陆matlab账号,没有自己注册一个就可以了。

2)按上述步骤安装OS Generic Video Interface包。

再次运行info=imaqhwinfo时可得到如上结果。

9.依次运行compile.m,initcamera.m,run_TLD.m。即可运行TLD程序了。

参考链接:

https://blog.csdn.net/qq_24473903/article/details/81674698

https://blog.csdn.net/chayedanyo/article/details/69945914

https://blog.csdn.net/darren2015zdc/article/details/51000395

https://blog.csdn.net/weixin_39370616/article/details/80819093

 类似资料: