首页 > 代码库 > 模板匹配 cvMatchTemplate
模板匹配 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=http://www.mamicode.com/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
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。