关于TLD算法,就不具体阐述了,谷歌百度搜索一下,介绍的文章相当多。
概述:
一、安装和编译高性能OpenCV 2.4.6
二、安装xcode和command line tool
三、MATLAB安装
四、TLD算法修改和配置
详细介绍:
一、安装和编译高性能OpenCV 2.4.6
(高性能编译部分引用:http://tianchunbinghe.blog.163.com/blog/static/7001201151592834161/)
1)先安装好brew,这个安装软件利器。
2)利用brew安装cmake,libpng,libjpeg,libtiff,pkgconfig;
3) 安装 Intel Threading Building Blocks
Intel Threading Building Blocks (TBB) 类似于以前的 OpenMP 和苹果系统自带的 GCD,用于帮助用户创建隐式的并行计算程序,底层依赖于操作系统的多线程库。TBB 最初是 Intel 的商业软件,但自从 3.0 以后就开源了,同时 Intel 仍然销售带有技术支持的商业版本。在其下载站点上下载了最新的 Commercial Aligned Release,目前的版本是4.2 。下载后把它移动到了 /opt/intel 目录下并创建了一个软链接以便日后版本升级时可以随意切换到新版本:
$ ls -l
total 8
lrwxr-xr-x 1 root wheel 17 11 6 09:40 tbb -> tbb42_20131003oss
drwxr-xr-x 12 paopao staff 408 11 6 09:33 tbb42_20131003oss
然后需要做两件事,首先修改 /opt/intel/tbb/bin/tbbvars.sh 脚本文件的第一个有效行,将正确的安装位置设置到环境变量上:
TBBROOT={SUBSTITUTE_INSTALL_DIR_HERE}
修改为:
SUBSTITUTE_INSTALL_DIR_HERE="/opt/intel/tbb"
TBBROOT="/opt/intel/tbb"
这样改好像有点问题,但是OpenCV只识别SUBSTITUTE_INSTALL_DIR_HERE,对TBBROOT不关注;(也可能我没有注意到,时间比较紧,没有细究这里)。
然后在 ~/.bash_profile 里添加一行以确保 TBB 库可被以后编译出来的 OpenCV 库成功加载:
source /opt/intel/tbb/bin/tbbvars.sh
操作完成以后重新打开一个终端窗口,显示 DYLD_LIBRARY_PATH 环境变量的值,里面应该包含 TBB 的路径才对:
$ echo $DYLD_LIBRARY_PATH
/opt/intel/tbb/lib
4)下载并编译高性能OpenCV;
直接官网下载最新版本程序包,解压并编译安装;这里需要注意的地方是cmake编译选项(注意最后还有一个点,表示cmake要编译的CMakefiles.txt存在地方);
cmake -G "Unix Makefiles" -D BUILD_NEW_PYTHON_SUPPORT=OFF -D CMAKE_OSX_ARCHITECTURES="x86_64" -D WITH_TBB=ON -D TBB_INCLUDE_DIR=/opt/intel/tbb/include .
cmake之后的日志可以看到这个字样表示成功。
-- Use TBB: YES
二、安装xcode和command line tool;
这部分比较简单,直接app store安装和下载。
三、MATLAB安装
这部分网上相关教程也比较多,也相对比较简单,下载直接安装即可。(个人安装最新的matlab 2013a)
这里要重点说明的一点:matlab C编译器 xcode的设置,主要是安装optsPatch_MACOSX8.patch补丁。
1)到官方网站 http://www.mathworks.cn/support/solutions/en/data/1-FR6LXJ/ 下载最新的补丁(些此文时是optsPatch_MACOSX8.patch)
2)进入matlab根目录
>>cd(matlabroot)
>>!unzip -o ~/Downloads/optsPatch_MACOSX8.patch
3)命令行下输入:mex -setup ,选择Template Options file for building gcc MEX-files 即可。
至此就完成了matlab C编译器 xcode的设置
四、TLD算法修改和配置
1)配置TLD算法matlab路径:(选择Set Path-> Add with Subfolders)
2) 安装如下内容修改compile.m文件
if ismac
disp('--->Mac');
include = ' -I/usr/local/include/opencv -I/usr/local/include/';
libpath = '/usr/local/lib/';
并注释掉if isUnix的判断部分;这部分会跟ismac冲突。
3)修改源文件:
1. 头文件:
//在TLD中,lkcpp文件里面的
#include <cv.h>
#include <highgui.h>
修改为:
#include <opencv2/opencv.hpp>
#include <opencv2/legacy/legacy.hpp>
//在TLD中,lk和fern的cpp文件里面注释掉:
//#ifdef _CHAR16T
//#define CHAR16_T
//#endif
修改为:
cvCalcOpticalFlowPyrLK( IMG[J], IMG[I],..., Level, status , 0,...);
3.修改initcamera.m文件
source.vid = videoinput('winvideo', 1, 'YUY2_640x480');
修改为:
source.vid = videoinput('macvideo',[1]);
######################################
摄像头配置
1.获取matlab安装的硬件信息:
>> imaqhwinfo
ans =
InstalledAdaptors: {'dcam' 'gige' 'macvideo'}
MATLABVersion: '8.1 (R2013a)'
ToolboxName: 'Image Acquisition Toolbox'
ToolboxVersion: '4.5 (R2013a)'
>> imaqhwinfo('macvideo')
ans =
AdaptorDllName: [1x85 char]
AdaptorDllVersion: '4.5 (R2013a)'
AdaptorName: 'macvideo'
DeviceIDs: {[1]}
DeviceInfo: [1x1 struct]
>> help videoinput
2.如果获取视频输入的全部信息可以matlab输入help videoinput;
######################################
4.修改img_blur.m文件:
h = FSPECIAL('gaussian',csize,sigma);
h = fspecial('gaussian',csize,sigma);
5.依次运行compile.m,initcamera.m,run_TLD.m;
就可以运行TLD程序了,代码默认是一个摩托车手的视频跟踪视频。
6.摄像头采集视频并进行跟踪,
修改run_TLD.m文件:
opt.source = struct('camera',0,'input','_input/','bb0',[])。
修改为
opt.source = struct('camera',1,'input','_input/','bb0',[])。
0改成1,就能成功从摄像头运行TLD程序了。
至此,mac os x环境下运行TLD算法流程基本完成。