模板匹配是一项在一幅图像中寻找与另一幅模板图像最匹配(相似)部分的技术。
<强>函数:强> Imgproc。matchTemplate(垫形象,垫templ垫结果,int方法)
<强>参数说明:强>
图片:源图像
templ:模板图像
结果:比较结果
方法:匹配算法
<强>匹配算法:强>
TM_SQDIFF平方差匹配法:该方法采用平方差来进行匹配;最好的匹配值为0;匹配越差,匹配值越大。
TM_CCORR相关匹配法:该方法采用乘法操作,数值越大表明匹配程度越好。
TM_CCOEFF相关系数匹配法:1表示完美的匹配。1表示最差的匹配。
TM_SQDIFF_NORMED归一化平方差匹配法。
TM_CCORR_NORMED归一化相关匹配法。
TM_CCOEFF_NORMED归一化相关系数匹配法。
示例代码:
公共静态void main (String [] args) {//TODO自动生成方法存根 System.loadLibrary (Core.NATIVE_LIBRARY_NAME); 垫g_tem=Imgcodecs.imread (“F: \ \ mould.jpg”); 垫g_src=https://www.yisu.com/zixun/Imgcodecs.imread (“F: \ \ source.jpg”); int result_rows=g_src.rows ()——g_tem.rows () + 1; int result_cols=g_src.cols ()——g_tem.cols () + 1; 垫g_result=new垫(result_rows, result_cols CvType.CV_32FC1); Imgproc。matchTemplate (g_src g_tem、g_result Imgproc.TM_CCORR_NORMED);//归一化平方差匹配法//Imgproc。matchTemplate (g_src g_tem g_result,//Imgproc.TM_CCOEFF_NORMED);//归一化相关系数匹配法//Imgproc。matchTemplate (g_src g_tem、g_result Imgproc.TM_CCOEFF);//////相关系数匹配法:1)表示完美的匹配。1表示最差的匹配。//Imgproc。matchTemplate (g_src g_tem、g_result Imgproc.TM_CCORR);////相关匹配法//Imgproc。matchTemplate (g_src g_tem、g_result Imgproc.TM_SQDIFF);////平方差匹配法:该方法采用平方差来进行匹配;最好的匹配值为0;匹配越差,匹配值越大。//Imgproc。matchTemplate (g_src g_tem、g_result Imgproc.TM_CCORR_NORMED);////归一化相关匹配法 核心。正常化(g_result g_result 0,1,核心。NORM_MINMAX 1新垫()); 点matchLocation=new点(); MinMaxLocResult mmlr=Core.minMaxLoc (g_result); matchLocation=mmlr.maxLoc;//此处使用maxLoc还是minLoc取决于使用的匹配算法 Imgproc。矩形(g_src matchLocation, 新的点(matchLocation。matchLocation x + g_tem.cols ()。y + g_tem.rows ()), 新的标量(0,0,0,0)); Imgcodecs.imwrite (“F: \ \ match.jpg g_src); } >之前源图像:
![]()
模板图像:
![]()
匹配结果:
![]()
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
Java + opencv3.2.0实现模板匹配