#include #include "opencv2/opencv.hpp"
using namespace std;
using namespace cv;
int main( int argc, char** argv )
/* load reference image */
img = imread( argv[1] );
/* always check */
if( img.empty() )
/* load template image */
tpl = imread( argv[2] );
/* always check */
if( tpl.empty())
/* get image's properties */
img_width = img.cols;
img_height = img.rows;
tpl_width = tpl.cols;
tpl_height = tpl.rows;
res_width = img_width - tpl_width + 1;
res_height = img_height - tpl_height + 1;
/* create new image for template matching computation */
res = cvcreateimage( cvsize( res_width, res_height ), ipl_depth_32f, 1 );
/* choose template matching method to be used */
matchtemplate( img, tpl, res, cv_tm_sqdiff );
minmaxloc( res, &minval, &maxval, &minloc, &maxloc,mask);
/* draw white rectangle */
rectangle( img,
cvpoint( minloc.x, minloc.y ),
cvpoint( minloc.x + tpl_width, minloc.y + tpl_height ),
cvscalar( 255, 255, 255, 0 ), 1, 0, 0 );
/* display images */
imshow( "reference", img );
imshow( "template", tpl );
/* wait until user press a key to exit */
cvwaitkey( 0 );
return 0;
}
作用:找到矩陣中全域性最大值和最小值。
c++:
void
minmaxloc
(inputarray
src, double*
minval
, double*
maxval
=0, point*
minloc
=0, point*
maxloc
=0, inputarray
mask
=noarray())¶
具體引數含義參考:
作用:比較模板影象和源影象重疊區域的匹配。
c++:
void
matchtemplate
(inputarray
image
, inputarray
templ
, outputarray
result
, int
method
)具體引數含義參考:
結果 模板影象
匹配之後
圖中白色框區域是匹配區域,效果很不錯哦!
文章參考:
opencv模板匹配
模板匹配是一種用於在源影象s中尋找定位給定目標影象t 即模板影象 的技術。其原理很簡單,就是通過一些相似度準則來衡量兩個影象塊之間的相似度similarity s,t 2.用途 模板匹配方法常用於一些平面影象處理中,例如印刷中的數字 工業零器件等小尺寸目標影象識別分類。3.方法 模板匹配中,源影象和...
模板匹配opencv
模板匹配,就是在一幅影象中尋找另一幅模板影象最匹配 也就是最相似 的部分的技術。說的有點抽象,下面給個例子說明就很明白了。在上面這幅全明星照中,我們想找出姚明頭像的位置,並把它標記出來,可以做到嗎?可以,這就是模板匹配的要做的事情。其實模板匹配實現的思想也是很簡單很暴力的,就是拿著模板 姚明頭像 在...
opencv 模板匹配
模板匹配的工作方式 模板匹配的工作方式跟直方圖的反向投影基本一樣,大致過程是這樣的 通過在輸入影象上滑 像塊對實際的影象塊和輸入影象進行匹配。假設我們有一張100x100的輸入影象,有一張10x10的模板影象,查詢的過程是這樣的 1 從輸入影象的左上角 0,0 開始,切割一塊 0,0 至 10,10...