Opencv實現模板匹配演算法用到的一些函式及原理

2021-09-05 11:21:50 字數 1446 閱讀 3683

目標檢測問題中,利用模板匹配的方法,需要利用模板影象塊和待檢測影象塊進行各種方法的匹配,找到待檢測的物件。因為模板影象和待檢測影象在獲取的時候,總會有一定的位移,怎樣定位到待檢測影象中的目標影象塊?這裡用到定位核。在一幅影象中,定位核與目標影象塊之間的相對距離是固定的,找到定位核,就能找到目標影象塊。問題轉化為怎樣在待檢測影象中找到定位核?定位核尋找也利用影象匹配的方法。怎樣匹配到定位核?這裡就用到模板匹配的方法。

下面記錄一下在opencv中實現定位核匹配用到的函式的使用方法和該過程實現的原理。當然,目標檢測的方法不僅僅侷限於模板匹配,模板匹配的方法也不僅僅侷限於下面提到的函式。

1 模板匹配的侷限性:匹配目標發生旋轉或大小變化,基本上演算法是失效的,怎麼處理?

1 matchtemplate()

void cv::matchtemplate	(

inputarray image,

inputarray templ,

outputarray result,

int method,

inputarray mask = noarray()

)

這裡result矩陣的大小為什麼是這個?templ視窗滑動與模板匹配後相似度數值儲存在對應畫素中,這裡要求是單通道,32位。所以計算完成後,會得到乙個相似度值的矩陣。

2 normalize()

void cv::normalize	(	

inputarray src,

inputoutputarray dst,

double alpha = 1,

double beta = 0,

int norm_type = norm_l2,

int dtype = -1,

inputarray mask = noarray()

)

歸一化矩陣的方法,normalize(tarimg,tarimg,0,1,norm_minmax,-1)

3 minmaxloc()

void cv::minmaxloc	(	

inputarray src,

double * minval,

double * maxval = 0,

point * minloc = 0,

point * maxloc = 0,

inputarray mask = noarray()

)

定義四個變數,獲取權重矩陣中的最小值、最大值、最小值對應座標位置、最大值對應座標位置(minvalue,maxvalue,minposition,maxposition)

根據模板匹配的演算法不同,評判匹配的好壞也不同,有些需要最大值及對應位置,有些需要最小值及對應位置

根據匹配結果就可以定位目標

形象化的可以使用rectangle()繪出矩形bb

OpenCV模板匹配

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 ch...

opencv模板匹配

模板匹配是一種用於在源影象s中尋找定位給定目標影象t 即模板影象 的技術。其原理很簡單,就是通過一些相似度準則來衡量兩個影象塊之間的相似度similarity s,t 2.用途 模板匹配方法常用於一些平面影象處理中,例如印刷中的數字 工業零器件等小尺寸目標影象識別分類。3.方法 模板匹配中,源影象和...

模板匹配opencv

模板匹配,就是在一幅影象中尋找另一幅模板影象最匹配 也就是最相似 的部分的技術。說的有點抽象,下面給個例子說明就很明白了。在上面這幅全明星照中,我們想找出姚明頭像的位置,並把它標記出來,可以做到嗎?可以,這就是模板匹配的要做的事情。其實模板匹配實現的思想也是很簡單很暴力的,就是拿著模板 姚明頭像 在...