Tracking-Learning-Detection TLD目标跟踪算法 Matlab版源码运行步骤

最近的学习涉及到了医疗领域动态目标跟踪方面,借此机会拜读了ZK大神的TLD论文,对其所完成工作十分憧憬和佩服,恰巧导师让我复现一下论文中的部分工作。整个复现过程颇为不易,也正因如此,决定将TLD算法源码的环境配置和运行步骤记录下来,作为记录用,也希望能帮助到大家。

目录

  • 1.环境配置
  • 2.项目导入
  • 3.源码运行
      • 第一步
      • 第二步
      • 第三步
      • 第四步
      • 第五步
      • 第六步

1.环境配置

基于Windows11系统,电脑要求安装Visual StudioMatlab以及OpenCV
版本方面,我用的是VSCommunity 2019, Matlab2021bOpenCV 3.3.1
系统版本没太大影响,10或者11都可以,Visual Studio和Matlab之间的版本要能够兼容,先搜索,选择能够匹配的版本。
OpenCV下载地址:下载地址1
OpenCV的版本选择,建议选3开头的版本,我之前安装的4开头的版本,运行compile.m文件时会报错fatal error C1083。
注意!OpenCV下载好之后,直接Extract到选定的文件夹记住路径即可,不用配置到环境变量当中!这是因为compile.m文件中的第23和24行指定了项目运行时OpenCV的路径,所以我们只需在那里进行修改,将路径设置为你存储OpenCV的路径即可!
当然你为了以后能够使用OpenCV进行C++编程,那也是将其可以配置到环境变量当中的。只不过整个代码运行过程可能涉及到频繁的OpenCV版本更换,建议节约时间为主。

2.项目导入

ZK大神上传的Matlab源码版本:下载地址2
直接下载Zip文件,解压,然后开始下述源码运行流程。

3.源码运行

第一步

在Matlab命令行界面输入mex -setup,输入这句命令之前,记得设置好工作目录。
工作目录设置Tracking-Learning-Detection TLD目标跟踪算法 Matlab版源码运行步骤_第1张图片
键入命令
Tracking-Learning-Detection TLD目标跟踪算法 Matlab版源码运行步骤_第2张图片
按照软件提示输入mex -setup C++,然后回车,完成第一步。
Tracking-Learning-Detection TLD目标跟踪算法 Matlab版源码运行步骤_第3张图片

第二步

打开项目根目录中的compile.m文件,定位到第23和24行,将源代码中OpenCV的路径:

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

修改为你完成安装之后OpenCV主文件夹中对应的路径,如图所示:

在这里插入图片描述
注意,我这里在include路径中多添加了一条路径,这是由于我安装的3开头的OpenCV,你自己安装时,根据你OpenCV目录中include文件夹下的具体内容来修改代码!!!
切记不要删除路径中原有的"-I"和"\",也不要多一个空格或者少一个空格!!!
include和libpath中的opencv路径不能有空格,切记不要将其安装至Program Files这种名称中自带空格的文件夹中!!!

第三步

进入mex文件夹下的lk.cpp, fern.cpp, 和 bb_overlap.cpp,注释如下所示的几行代码:

#ifdef _CHAR16T
#define CHAR16_T
#endif

第四步

运行compile文件,得到如下输出:
Tracking-Learning-Detection TLD目标跟踪算法 Matlab版源码运行步骤_第4张图片

第五步

开mex文件下的的lk.cpp文件,找到其中的186行,这里看仔细了,是最长的这一行:

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 );

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 );
将标红的"0“更改为”status"。

第六步

将OpenCV主目录下的\build\x64\vc15\bin文件夹中的所有文件复制至OpenTLD-master文件夹中
Tracking-Learning-Detection TLD目标跟踪算法 Matlab版源码运行步骤_第5张图片
Tracking-Learning-Detection TLD目标跟踪算法 Matlab版源码运行步骤_第6张图片
运行run_TLD.m文件,一般来说不会报错,能够得到下图所示的成功运行结果:
Tracking-Learning-Detection TLD目标跟踪算法 Matlab版源码运行步骤_第7张图片
如果报错’FSPECIAL’ 无法识别,则定位到错误所在matlab文件的对应位置处,将’FSPECIAL’修改为‘fspecial’即可。
即,将img\img_blur.m中的第29行的FSPECIAL改成小写fspecial。

你可能感兴趣的:(TLD,matlab,目标跟踪,算法)