#ifdef _CH_
#pragma package<opencv>
#endif
#pragma comment(lib,"cv.lib")
#pragma comment(lib,"cvcam.lib")
#pragma comment(lib,"cxcore.lib")
#pragma comment(lib,"highgui.lib")
#include <cv.h>
#include <cvcam.h>
#include <cxcore.h>
#include <highgui.h>
void main()
{
IplImage *src_image; //载入的源图像
IplImage *temp1; //模板图像
IplImage *ftmp[6]; //存放结果图像
//载入源图像
src_image = cvLoadImage("1.jpg");
assert(src_image!=NULL);
//载入模板图像
temp1 = cvLoadImage("2.jpg");
assert(temp1!=NULL);
//目标图像的宽度和高度
int iwidth = src_image->width - temp1->width + 1;
int iheight =src_image->height -temp1->height + 1;
for (int i = 0;i < 6;i++)
{
ftmp[i]=cvCreateImage(cvSize(iwidth,iheight),
32,
1
);
}
//执行模板匹配
for (int j = 0; j < 6;j++)
{
cvMatchTemplate(src_image,temp1,ftmp[j],j);
cvNormalize(ftmp[j],ftmp[j],1,0, CV_MINMAX);
}
//创建窗口
cvNamedWindow("Show_Src");
cvNamedWindow("Show_Template");
cvNamedWindow("Show_SQDIFF");
cvNamedWindow("Show_NORMED");
cvNamedWindow("Show_CCORR");
cvNamedWindow("Show_CCORR_NORMED");
cvNamedWindow("Show_CCOEFF");
cvNamedWindow("Show_CCOEFF_NORMED");
//显示结果
cvShowImage("Show_Src",src_image);
cvShowImage("Show_Template",temp1);
cvShowImage("Show_SQDIFF",ftmp[0]);
cvShowImage("Show_NORMED",ftmp[1]);
cvShowImage("Show_CCORR",ftmp[2]);
cvShowImage("Show_CCORR_NORMED",ftmp[3]);
cvShowImage("Show_CCOEFF",ftmp[4]);
cvShowImage("Show_CCOEFF_NORMED",ftmp[5]);
cvWaitKey();
//释放资源
cvReleaseImage(&src_image);
cvReleaseImage(&temp1);
cvReleaseImage(&ftmp[0]);
cvReleaseImage(&ftmp[1]);
cvReleaseImage(&ftmp[2]);
cvReleaseImage(&ftmp[3]);
cvReleaseImage(&ftmp[4]);
cvReleaseImage(&ftmp[5]);
cvDestroyAllWindows();
}