码迷,mamicode.com
首页 > 其他好文 > 详细

模板匹配 cvMatchTemplate

时间:2014-08-14 17:10:39      阅读:291      评论:0      收藏:0      [点我收藏+]

标签:opencv 模板匹配 cvmatchtemplate

效果:

bubuko.com,布布扣bubuko.com,布布扣

代码:

#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

模板匹配 cvMatchTemplate

标签:opencv 模板匹配 cvmatchtemplate

原文地址:http://flyclc.blog.51cto.com/1385758/1539764

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!