标签:opencv 模板匹配 cvmatchtemplate
效果:
代码:
#include "cv.h" #include "cxcore.h" #include "highgui.h" #include <iostream> int MatchTemplate(int argc,char** argv) { IplImage* temp=cvLoadImage("e:\\picture\\tou.jpg"); IplImage* src=cvLoadImage("e:\\picture\\4.jpg"); IplImage* result[6]; CvPoint MaxPt[6]; for(int i=0;i<6;i++) { result[i]=cvCreateImage(cvSize(src->width-temp->width+1,src->height-temp->height+1),IPL_DEPTH_32F,1); cvZero(result[i]); cvMatchTemplate(src,temp,result[i],i); //模板匹配,分别用6种方法 cvNormalize(result[i],result[i],1,0,CV_MINMAX); //归一化,把结果缩放到0~1范围内 cvPow(result[i],result[i],3); //结果的三次方,小的更小,大的基本不变(因为范围是0~1) cvMinMaxLoc(result[i],NULL,NULL,NULL,&MaxPt[i]); //获取最大值坐标 MaxPt[i].x=MaxPt[i].x+cvRound(temp->width/2); //修正最大值在原图的坐标,即查找结果 MaxPt[i].y=MaxPt[i].y+cvRound(temp->height/2); } for(int i=0;i<6;i++) { cvCircle(src,MaxPt[i],2,cvScalar(0,0,255),2); //在原图上标明结果坐标 } cvNamedWindow("src"); cvNamedWindow("temp"); cvNamedWindow("result1"); cvNamedWindow("result2"); cvNamedWindow("result3"); cvNamedWindow("result4"); cvNamedWindow("result5"); cvNamedWindow("result6"); cvShowImage("src",src); cvShowImage("temp",temp); cvShowImage("result1",result[0]); cvShowImage("result2",result[1]); cvShowImage("result3",result[2]); cvShowImage("result4",result[3]); cvShowImage("result5",result[4]); cvShowImage("result6",result[5]); cvWaitKey(0); return 0; }
本文出自 “flyclc” 博客,请务必保留此出处http://flyclc.blog.51cto.com/1385758/1539764
模板匹配 cvMatchTemplate,布布扣,bubuko.com
标签:opencv 模板匹配 cvmatchtemplate
原文地址:http://flyclc.blog.51cto.com/1385758/1539764