标签:matchTemplate 匹配 结果 大图 小图 TM 方法 cv 模板
11.png
12.png
#include<opencv2/opencv.hpp> #include<iostream> int main(int argc, char** argv) { cv::Mat src = cv::imread("D:/bb/tu/11.png"); cv::Mat templ = cv::imread("D:/bb/tu/12.png"); cv::Mat ftmp; cv::matchTemplate(src, templ, ftmp,5); //模板匹配 /* 参数1:src用于搜索的输入图像, 8U 或 32F, 大小 W-H 参数2:用于匹配的模板,和src类型相同, 大小 w-h 参数3:匹配结果图像, 类型 32F, 大小 (W-w+1)-(H-h+1) 参数4:用于比较的方法(有六种) cv::TM_SQDIFF=0 该方法使用平方差进行匹配,因此最佳的匹配结果在结果为0处,值越大匹配结果越差 cv::TM_SQDIFF_NORMED=1:该方法使用归一化的平方差进行匹配,最佳匹配也在结果为0处 cv::TM_CCORR=2:相关性匹配方法,该方法使用源图像与模板图像的卷积结果进行匹配,因此,最佳 匹配位置在值最大处,值越小匹配结果越差 【个人测试:匹配性很差】 cv::TM_CCORR_NORMED=3:归一化的相关性匹配方法,与相关性匹配方法类似,最佳匹配位置也是在值最大处 cv::TM_CCOEFF=4:相关性系数匹配方法,该方法使用源图像与其均值的差、模板与其均值的差二者之间的相 关性进行匹配,最佳匹配结果在值等于1处,最差匹配结果在值等于-1处,值等于0直接表示二者不相关 cv::TM_CCOEFF_NORMED=5:归一化的相关性系数匹配方法,正值表示匹配的结果较好,负值则表示匹配的效 果较差,也是值越大,匹配效果也好 */ std::cerr << cv::TM_CCOEFF_NORMED << std::endl; normalize(ftmp, ftmp, 1, 0, cv::NORM_MINMAX); double minVal; double maxVal; cv::Point minLoc; cv::Point maxLoc; minMaxLoc(ftmp, &minVal, &maxVal, &minLoc, &maxLoc); //找到最佳匹配点 //从匹配结果图像中找出最佳匹配点 rectangle(src, cv::Rect(maxLoc.x, maxLoc.y, templ.cols, templ.rows), cv::Scalar(0, 0, 255), 2, 8);//画出匹配到的矩形框 //注意:与方法有关,有的是最小值是最佳匹配;有的是最大值是最佳匹配 cv::imshow("src", src); cv::waitKey(); return 0; }
标签:matchTemplate,匹配,结果,大图,小图,TM,方法,cv,模板 来源: https://www.cnblogs.com/liming19680104/p/15836562.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。