OpenCV提供了一个模板匹配函数,用于在图像中寻找给定模板的匹配位置。
void matchTemplate( InputArray image, InputArray templ,
OutputArray result, int method, InputArray mask = noArray() );
其中,图像模板匹配方法标志:
- #include <opencv2/opencv.hpp>
- #include <iostream>
-
- using namespace cv;
- using namespace std;
-
- //模板匹配
- void Template_matching(Mat img,Mat temp){
- Mat result;
- matchTemplate(img,temp,result,TM_CCOEFF_NORMED);
- //在结果图像中找到最佳匹配位置:
- double maxVal,minVal;
- Point maxLoc,minLoc;
- minMaxLoc(result,&minVal,&maxVal,&minLoc,&maxLoc);
- //在原始图像上绘制矩形框标记最佳匹配位置:
- rectangle(img,Point(maxLoc.x,maxLoc.y),Point(maxLoc.x+temp.cols,maxLoc.y+temp.rows),Scalar(0,0,0),2);
-
- imwrite("/sdcard/DCIM/img.png",img);//原图像
- imwrite("/sdcard/DCIM/temp.png",temp);//模板
- }