TLD即Tracking Learning Detection,Zdenek Kalal在其首頁上給出的代碼http://info.ee.surrey.ac.uk/Personal/Z.Kalal/tld.html
我電腦的程式配置:WIN7+VS2010+MATLAB R2010a+OpenCV2.2(也可以是Opencv2.3.1)
OpenCV2.2的(這裡含有各種版本的OpenCV)http://www.opencv.org.cn/index.php/Download
第一步:安裝OpenCV2.2 OpenCV和VS2010的安裝教程地址http://www.opencv.org.cn/index.p ... E8%A3%85OpenCV2.4.3(這裡OpenCV2.2和OpenCV2.3.4的安裝步驟是一樣的)
第二步:啟動matlab R2010a,在命令視窗中輸入“mex –setup”,按y鍵進入編譯器選擇,輸入vs2010編譯器對應的序號
第三步:設定“complie.m”檔案的opencv的路徑 原檔案路徑為:include = ' -Ic:\OpenCV2.2\include\opencv\ -Ic:\OpenCV2.2\include\'; libpath = 'c:\OpenCV2.2\lib\';
我的路徑為: include = ' -IE:\OpenCV2.2\include\opencv\ -IE:\OpenCV2.2\include\'; libpath = 'E:\OpenCV2.2\lib\';
注釋掉:lk.cpp, fern.cpp, bb_overlap.cpp檔案中的: #ifdef _CHAR16_T
#define CHAR16_T
#endif
第四步: 修改complie.m檔案中的代碼
解決辦法是開啟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 );
將上述紅色的0改為status,如下:
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 );
修改後運行,會出現complete語句,這樣前面的工作就成功完成了
第五步:運行run_TLD.m,這時會出現一個跟蹤>機車的影像。