前段时间老师提起过捕食者跟踪算法,这两天查了一下。看着别人的博文自己尝试着在自己的电脑上运行了zk大神的算法。
算法实现可以在https://github.com/zk00006/OpenTLD/wiki/Installation中找到。
或者:http://download.csdn.net/detail/yuexin2/6857673
首先,先声明一下我的环境,我使用的是vs2008+matlab2012b+opencv2.3.1。
. vs2008+opencv的安装可以参考:http://blog.csdn.net/yuexin2/article/details/9105601
matlab安装参考:http://download.csdn.net/detail/yuexin2/6857929
在安装好以上软件后,需要打开matlab配置matlab与vs2008的混合编程。
在matlab命令输入界面键入mex -setup。注意在mex和-setup中有一个空格。
在弹出的提示内容中选择y,这时会提示安装混合编程的程序,选择2 vs2008。
再在提示的内容中输入y即可。
下面,我们打开OpenTLD-master中的 compile.m文件将其中19行中的mex改为下载后OpenTLD-master文件中mex文件的所在位置。
再将23和24行的include改为opencv的安装路径中include文件、opencv文件和opencv2文件。labpath改为opencv的lib路径。
然后运行。
命令窗口会出现完成的提示。
下来打开run_TLD.m文件运行,会提示错误,在img_blur.m文件中的29行。将其fspecial的大写换成小写的。
再打开mex下的lk.cpp文件在186行。
将
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 );
再重新运行compile.m和run_TLD.m文件就可以啦。
下面附上我在做这个的视频:http://v.youku.com/v_show/id_XNjYyNzMxNDM2.html