int _tmain(int argc, _TCHAR* argv[]) {
IplImage *src, *templ, *ftmp[6]; //ftmp will hold results
int i;
//Read in the source image to be searched
src = cvLoadImage("face.jpg", 1);
if (!src) {
perror("Cannot open the file\n");
return -1;
}
//Read in the template to be used for matching
templ = cvLoadImage("faceTemplate.jpg", 1);
if (!templ) {
perror("Cannot open the file\n");
return -1;
}
//Allocate output images
int iwidth = src ->width - templ ->width + 1;
int iheight = src ->height - templ ->height + 1;
for(int i = 0; i < 6; i++) {
ftmp[i] = cvCreateImage(
cvSize(iwidth, iheight), 32, 1);
}
//Do to matching of the template with the image
for(i = 0; i < 6; i++) {
cvMatchTemplate(src, templ, ftmp[i], i);
cvNormalize(ftmp[i], ftmp[i], 1, 0, CV_MINMAX);
}
//display
cvNamedWindow("Template", 0);
cvShowImage("Template", templ);
cvNamedWindow("Image", 0);
cvShowImage("Image", src);
cvNamedWindow("SQDIFF", 0);
cvShowImage("SQDIFF", ftmp[0]);
cvNamedWindow("SQDIFF_NORMED", 0);
cvShowImage("SQDIFF_NORMED", ftmp[1]);
cvNamedWindow("CCORR", 0);
cvShowImage("CCORR", ftmp[2]);
cvNamedWindow("CCORR_NORMED", 0);
cvShowImage("CCORR_NORMED", ftmp[3]);
cvNamedWindow("CCOEFF", 0);
cvShowImage("CCOEFF", ftmp[4]);
cvNamedWindow("CCOEFF_NORMED", 0);
cvShowImage("CCOEFF_NORMED", ftmp[5]);
cvWaitKey(0);
for(int i = 0; i < 6; i++)
cvReleaseImage(&ftmp[i]);
cvReleaseImage(&src);
cvReleaseImage(&templ);
cvDestroyAllWindows();
return 0;
}
Template matching
最新推荐文章于 2023-08-30 21:16:58 发布