模板匹配是一種最原始、最基本的模式識別方法,研究某一特定物件物的圖案位於影象的什麼地方,進而識別物件物,這就是乙個匹配問題。它是影象處理中最基本、最常用的匹配方法。模板匹配具有自身的侷限性,主要表現在它只能進行平行移動,若原影象中的匹配目標發生旋轉或大小變化,該演算法無效。
先貼上簡陋的介面圖
mat temp = new mat("模板.jpg", emgu.cv.cvenum.loadimagetype.anycolor);//匹配的模板
//建立mat 儲存輸出匹配結果。
mat result = new mat(new size(src.width - temp.width + 1, src.height - temp.height + 1),
emgu.cv.cvenum.depthtype.cv32f, 1);
#region 模板匹配引數說明
//採用係數匹配法,匹配值越大越接近準確影象。
//iinputarray image:輸入待搜尋的影象。影象型別為8位或32位浮點型別。設影象的大小為[w, h]。
//iinputarray templ:輸入模板影象,型別與待搜尋影象型別一致,並且大小不能大於待搜尋影象。設影象大小為[w, h]。
//ioutputarray result:輸出匹配的結果,單通道,32位浮點型別且大小為[w - w + 1, h - h + 1]。
//templatematchingtype method:列舉型別識別符號,表示匹配演算法型別。
//sqdiff = 0 平方差匹配,最好的匹配為 0。
//sqdiffnormed = 1 歸一化平方差匹配,最好效果為 0。
//ccorr = 2 相關匹配法,數值越大效果越好。
//ccorrnormed = 3 歸一化相關匹配法,數值越大效果越好。
//ccoeff = 4 係數匹配法,數值越大效果越好。
//ccoeffnormed = 5 歸一化係數匹配法,數值越大效果越好。
#endregion
cvinvoke.matchtemplate(src, temp, result, emgu.cv.cvenum.templatematchingtype.ccoeff);
#region 歸一化函式引數說明
//iinputarray src:輸入資料。
//ioutputarray dst:進行歸一化後輸出資料。
//double alpha = 1; 歸一化後的最大值,預設為 1。
//double beta = 0:歸一化後的最小值,預設為 0。
#endregion
cvinvoke.normalize(result, result, 255, 0, emgu.cv.cvenum.normtype.minmax);
double max = 0, min = 0;//建立double的極值。
point max_point = new point(0, 0), min_point = new point(0, 0);
#region 極值函式引數說明
//iinputarray arr:輸入陣列。
//ref double minval:輸出陣列中的最小值。
//ref double maxval; 輸出陣列中的最大值。
//ref point minloc:輸出最小值的座標。
//ref point maxloc; 輸出最大值的座標。
//iinputarray mask = null:蒙版。
#endregion
cvinvoke.minmaxloc(result, ref min, ref max, ref min_point, ref max_point);
cvinvoke.rectangle(src, new rectangle(max_point, temp.size), new mcvscalar(0, 0, 255), 3);//繪製矩形,匹配得到的效果。
tb_result.text = "min=" + min + ",max=" + max;
tb_result.text += environment.newline;
tb_result.text += "最大值座標:"+ max_point.tostring();
tb_result.text += environment.newline;
tb_result.text += "最小值座標:" + min_point.tostring();
ib_original.image = src;
33 SIFT特徵匹配(EmguCV學習)
懶了很久,還有最後一點兒,全部整理完 1 sifi運算元使用流程 初始化sift向量,呼叫detect 方法識別兩張各自的特徵點 使用sift的compute 方法計算計算兩張各自特徵點的特徵描述符 使用匹配器matcher進行特徵描述符匹配 bf與flann 以其中一幅為模板,在另一幅中尋找匹配的...
關於emgucv的書 精選 EMGUCV基礎
第一章 emgu cv 簡介 emgu cv 是.net 平台下對 opencv 影象處理庫的封裝。也就是opencv 的.net 版。它執行在 net 相容的程式語言下呼叫 opencv 的函式,如 c vb vc 等。同時這個 封裝庫可以在 mono 下編譯和在 linux mac os x 上...
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...