opnecv(十一) 模板匹配

2021-10-08 14:52:38 字數 2458 閱讀 4864

void

matchtemplate

( inputarray image, inputarray templ,

outputarray result,

int method, inputarray mask =

noarray()

);

method:方法:有以下6種

差值平方和匹配 cv_tm_sqdiff

標準化差值平方和匹配 cv_tm_sqdiff_normed

相關匹配 cv_tm_ccorr

標準相關匹配 cv_tm_ccorr_normed

相關匹配 cv_tm_ccoeff

標準相關匹配 cv_tm_ccoeff_normed

前面兩種方法為越小的值表示越匹配,後四種方法值越大越匹配。

其實模板匹配的使用和直方圖反向投影calcbackproject函式很像,只是直方圖反向投影對比的是直方圖,而模板匹配對比的是影象的畫素值,相比較而言,直方圖反向投影的匹配魯棒性更好。

這個函式因為只能在影象中搜尋出指定的模板,如果模板是從待搜尋目標中擷取出來的,效果會很好,如果模板不是待搜素影象的一部分,效果就差的多了,主要表現在它只能進行平行移動,若原影象中的匹配目標發生旋轉或大小變化,該演算法無效。

#include

#include

#include

#include

using

namespace std;

using

namespace cv;

void

main()

{ cv::mat img1 = cv::

imread

("c:\\users\\administrator\\desktop\\tmp.png");

cv::mat img2 = cv::

imread

("c:\\users\\administrator\\desktop\\tmp1.png");

cv::

imshow

("【被查詢的影象】"

, img1)

; cv::

imshow

("【模版影象】"

, img2)

;//步驟二:建立乙個空畫布用來繪製匹配結果

cv::mat dstimg;

dstimg.

create

(img1.dims,img1.size,img1.

type()

);cv::

imshow

("createimg"

,dstimg)

;//步驟三:匹配,最後乙個引數為匹配方式,共有6種,詳細請查閱函式介紹

cv::

matchtemplate

(img1, img2, dstimg,0)

;//步驟四:歸一化影象矩陣,可省略

cv::

normalize

(dstimg, dstimg,0,

1,32)

;//步驟五:獲取最大或最小匹配係數

//首先是從得到的 輸出矩陣中得到 最大或最小值(平方差匹配方式是越小越好,所以在這種方式下,找到最小位置)

//找矩陣的最小位置的函式是 minmaxloc函式

cv::point minpoint;

cv::point maxpoint;

double

*minval =0;

double

*maxval =0;

cv::

minmaxloc

(dstimg, minval, maxval,

&minpoint,

&maxpoint)

;//步驟六:開始正式繪製

cv::

rectangle

(img1, minpoint, cv::

point

(minpoint.x + img2.cols, minpoint.y + img2.rows)

, cv::

scalar(0

,255,0

),2,

8); cv::

imshow

("【匹配後的影象】"

, img1)

; cv::

rectangle

(dstimg, minpoint, cv::

point

(minpoint.x + img2.cols, minpoint.y + img2.rows)

, cv::

scalar(0

,0,0

),3,

8); cv::

imshow

("【匹配後的計算過程影象】"

, dstimg)

; cv::

waitkey(0

);

OpenCV Python 模板匹配 三十一

在本章中,您將學習 如果輸入影象的大小為 wxh 而模板影象的大小為 wxh 則輸出影象的大小將為 w w 1,h h 1 得到結果後,可以使用cv.minmaxloc 函式查詢最大 最小值在哪。將其作為矩形的左上角,並以 w,h 作為矩形的寬度和高度。該矩形是您模板的區域。注意如果使用cv.tm ...

資料型別不匹配 CV學習筆記(十一) 模板匹配

在這一篇文章中,我們將會了解數字影象處理中重要的組成部分之一的模板匹配。一 什麼是模板匹配?在opencv教程中這樣解釋模板匹配 模板匹配是一項在一幅影象中尋找與另一幅模板影象最匹配 相似 部分的技術.這裡說的模板是我們已知的小影象,模板匹配就是在一副大影象中搜尋目標。模板就是我們已知的在圖中要找的...

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