Template matching

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;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值