shanghai-achao

[opencv] 模板匹配案例

srcimage:=cvLoadImage(PAnsiChar(testImageName),1);

temImage:=cvLoadImage(PAnsiChar(mudeImageName),1);//temImage为模板图片,其尺寸一定要小于srcimage

resimage:=cvCreateImage(cvSize(srcimage.width-temImage.width+1, srcimage.height-temimage.height+1), 32, 1);//注意resimage的宽的和高度是如何得来的

cvMatchTemplate(srcimage, temImage, resimage,CV_TM_SQDIFF);//匹配的结果保存在resimage图片结构体中,CV_TM_SQDIFF表示平方差匹配法

cvMinMaxLoc(resimage,@min,@max,@minpoint,@maxpoint,nil);//从resimage图片结构体中提取出匹配的结果,min,max:Double;表示最小匹配结果和最大匹配结果,

  minpoint,maxpoint:TCvPoint;存放着最差结果和最好结果的点信息,请注意匹配方法的不同,对应着不同的提取结果的方式

cvShowImage(\'源图\',srcimage);
cvShowImage(\'模板图\',temImage);

p2.x:=minpoint.x+temImage.width;//p2:TCvPoint;
p2.y:=minpoint.y+temimage.height;

cvRectangle(srcimage,minpoint,p2,CV_RGB(0,0,255),3,8,0);//minpoint,p2:TCvPoint为找到的最佳匹配区域矩形的两个对角顶点

cvShowImage(\'匹配结果\',srcimage);
cvReleaseImage(srcimage);
cvReleaseImage(temImage);
cvReleaseImage(resimage);

分类:

技术点:

相关文章: