EmguCv模板匹配学习日记
生活随笔
收集整理的這篇文章主要介紹了
EmguCv模板匹配学习日记
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
參考:https://blog.csdn.net/xjjatdna/article/details/86586276
? ?public static void TemplateMache(string srcImg, string tempImg){using (Mat tempImage = CvInvoke.Imread(tempImg, ImreadModes.AnyColor))using (Mat srcImage = CvInvoke.Imread(srcImg, ImreadModes.AnyColor)){//創建mat 存儲輸出匹配結果。Mat result = new Mat(new Size(srcImage.Width - tempImage.Width + 1, srcImage.Height - tempImage.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 歸一化系數匹配法,數值越大效果越好。#endregionCvInvoke.MatchTemplate(srcImage, tempImage, result, Emgu.CV.CvEnum.TemplateMatchingType.Ccoeff);#region 歸一化函數參數說明//IInputArray src:輸入數據。//IOutputArray dst:進行歸一化后輸出數據。//double alpha = 1; 歸一化后的最大值,默認為 1。//double beta = 0:歸一化后的最小值,默認為 0。#endregionCvInvoke.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:蒙版。#endregionCvInvoke.MinMaxLoc(result, ref min, ref max, ref min_point, ref max_point);CvInvoke.Rectangle(srcImage, new Rectangle(max_point, tempImage.Size), new MCvScalar(0, 0, 255), 3);//繪制矩形,匹配得到的效果。}}模板圖片:?
?匹配圖片:
?
總結
以上是生活随笔為你收集整理的EmguCv模板匹配学习日记的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: VMware 下Linux无法上网 新增
- 下一篇: c语言找出最大值和最小值并按降序排输出,