一、概述
目標跟蹤是計算機視覺領域的乙個重要分支。研究的人很多,近幾年也出現了很多很多的演算法。大家看看淋漓滿目的*****就知道了。但在這裡,我們也聚焦下比較簡單的演算法,看看它的優勢在**。畢竟有時候簡單就是一種美。
在這裡我們一起來欣賞下「模板匹配」這個簡單點的跟蹤演算法。它的思想很簡單,我們把要跟蹤的目標儲存好,然後在每一幀來臨的時候,我們在整個影象中尋找與這個目標最相似的,我們就相信這個就是目標了。那如何判斷相似呢?就用到了一些相關性的東西了,這個在我之前的一篇博文裡面介紹過,大家可以參考下:
模板匹配中差值的平方和(ssd)與互相關準則的關係
二、**實現
******tracker.cpp
[cpp]view plain
copy
// object tracking algorithm using matchtemplate
// author : zouxy
// date : 2013-10-28
// homepage :
// email : [email protected]
#include
using namespace cv;
using namespace std;
// global variables
rect box;
bool drawing_box = false;
bool gotbb = false;
// bounding box mouse callback
void mousehandler(int event, int x, int y, int flags, void *param)
break;
case cv_event_lbuttondown:
drawing_box = true;
box = rect( x, y, 0, 0 );
break;
case cv_event_lbuttonup:
drawing_box = false;
if( box.width
if( box.height
gotbb = true;
break;
} }
// tracker: get search patches around the last tracking box,
// and find the most similar one
void tracking(mat frame, mat &model, rect &trackbox)
int main(int argc, char * ar**)
//register mouse callback to draw the bounding box
cvnamedwindow("tracker", cv_window_autosize);
cvsetmousecallback("tracker", mousehandler, null );
mat frame, model;
capture >> frame;
while(!gotbb)
//remove callback
cvsetmousecallback("tracker", null, null );
mat gray;
cvtcolor(frame, gray, cv_rgb2gray);
model = gray(box);
int framecount = 0;
while (1)
return 0;
}
三、結果
多目標跟蹤效果
目標跟蹤 模板匹配
在一幅影象中尋找和模板影象 patch 最相似的區域。1.判斷相似性 opencv中有對應的函式 void matchtemplate const mat image,const mat templ,mat result,int method 該函式的功能為,在輸入源影象sourceimage i ...
多目標模板匹配
一.模板匹配 模板匹配是數字影象處理的重要組成部分之一。把不同感測器或同一感測器在不同時間 不同成像條件下對同一景物獲取的兩幅或多幅影象在空間上對準,或根據已知模式到另一幅圖中尋找相應模式的處理方法就叫做模板匹配。簡單而言,模板就是一幅已知的小影象。模板匹配就是在一幅大影象中搜尋目標,已知該圖中有要...
opencv之運動模板跟蹤
include cv.h include highgui.h include include include include various tracking parameters in seconds const double mhi duration 0.5 const double max t...