4,246
社区成员
发帖
与我相关
我的任务
分享
#include <opencv2/core/core.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>
#include <stdio.h>
using namespace std;
using namespace cv;
int main()
{
IplImage* img = cvLoadImage("C:\\t2.jpg",1);
IplImage* templ = cvLoadImage("C:\\t1.jpg",1);
int result_cols = img->width - templ->width + 1;
int result_rows = img->height - templ->height + 1;
IplImage* result = cvCreateImage(cvSize(result_cols, result_rows), IPL_DEPTH_32F, 3);
cvMatchTemplate(img, templ, result, CV_TM_SQDIFF_NORMED);//这里使用的匹配算法是标准平方差匹配 method=CV_TM_SQDIFF_NORMED,数值越小匹配度越好
cvNormalize(result, result, 0, 1, NORM_MINMAX);
double minVal = -1;
double maxVal;
CvPoint minLoc;
CvPoint maxLoc;
CvPoint matchLoc;
cout << "匹配度:" << minVal << endl;
cvMinMaxLoc(result, &minVal, &maxVal, &minLoc, &maxLoc, NULL);
cout << "匹配度:" << minVal << endl;
matchLoc = minLoc;
cvRectangle(img, matchLoc, cvPoint(matchLoc.x + templ->width, matchLoc.y + templ->height), cvScalar(0, 255, 0), 2, 8, 0);
cvShowImage("img", img);
cvWaitKey(0);
return 0;
}