图像处理中的模板匹配(程序基于Op…

   模板匹配,即是用模板图像通过滑行依次与图像的重叠区域进行相似度比较,将相似度最大的区域作为匹配目标区域。在OpenCV中用函数cvMatchTemplate来滑动过整个图像,并将比较结果存入result(比较结果的映射图像。单通道、32-比特浮点数.)参数当中。再通过使用函数cvMinMaxLoc找result中的全局最大值以及最大值所代表的匹配位置max_loc。

       有关于比较结果的映射图像result的含义,将会在后期文章中说明。

贴出代码:

=======================================================

以下是引用片段:

#include <cv.h>
#include <highgui.h>

IplImage* src=NULL;
IplImage* tmp=NULL;

void L_TemplateMatch(IplImage* src,IplImage* tmp)
{
 int w,h;
 CvRect rect;
 IplImage* result=NULL;
 IplImage* srcGray=NULL;
 IplImage* tmpGray=NULL;
 double min_val;
 double max_val;
 CvPoint min_loc;
 CvPoint max_loc;
 CvPoint pt1;
 CvPoint pt2;
 
 w=src->width-tmp->width;
 h=src->height-tmp->height;
 result=cvCreateImage(cvSize(w+1,h+1),IPL_DEPTH_32F,1);      //必须为32位浮点型,IPL_DEPTH_32F
 srcGray=cvCreateImage(cvGetSize(src),8,1);
 tmpGray=cvCreateImage(cvGetSize(tmp),8,1);
 cvCvtColor(src,srcGray,CV_BGR2GRAY);
 cvCvtColor(tmp,tmpGray,CV_BGR2GRAY);
 cvMatchTemplate(srcGray,tmpGray,result,CV_TM_CCORR_NORMED);
 //CV_TM_SQDIFF  CV_TM_SQDIFF_NORMED  CV_TM_CCORR  (这三种Method的匹配效果不佳)
 //CV_TM_CCORR_NORMED CV_TM_CCOEFF CV_TM_CCOEFF_NORMED  (这三种Method的匹配效果完美)

cvMinMaxLoc(result,&min_val,&max_val,&min_loc,&max_loc,NULL); 

 rect=cvRect(max_loc.x,max_loc.y,tmp->width,tmp->height);
 pt1=cvPoint(rect.x,rect.y);
 pt2=cvPoint(rect.x+rect.width,rect.y+rect.height);
 cvRectangle( src,pt1, pt2, cvScalar(255,0,0),1, 8, 0 );

 cvReleaseImage(&srcGray);
 cvReleaseImage(&tmpGray);
 cvReleaseImage(&result);
}

void main()
{
  cvNamedWindow("matchResult",1);
  src=cvLoadImage("1.jpg",1);
  tmp=cvLoadImage("2.jpg",1);
 
  L_TemplateMatch(src,tmp);
  cvShowImage("matchResult",src);
  cvWaitKey(0);

  cvDestroyWindow("matchResult");
  cvReleaseImage(&src);
  cvReleaseImage(&tmp);
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值