博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
图像处理中的模板匹配(程序基于Op…
阅读量:4050 次
发布时间:2019-05-25

本文共 1680 字,大约阅读时间需要 5 分钟。

   模板匹配,即是用模板图像通过滑行依次与图像的重叠区域进行相似度比较,将相似度最大的区域作为匹配目标区域。在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);
}

转载地址:http://xpsci.baihongyu.com/

你可能感兴趣的文章
MongoDB文档(Document)全局唯一ID的设计思路
查看>>
mongoDB简介
查看>>
Redis持久化存储(AOF与RDB两种模式)
查看>>
memcached工作原理与优化建议
查看>>
Redis与Memcached的区别
查看>>
redis sharding方案
查看>>
程序员最核心的竞争力是什么?
查看>>
Node.js机制及原理理解初步
查看>>
linux CPU个数查看
查看>>
分布式应用开发相关的面试题收集
查看>>
简单理解Socket及TCP/IP、Http、Socket的区别
查看>>
利用HTTP Cache来优化网站
查看>>
利用负载均衡优化和加速HTTP应用
查看>>
消息队列设计精要
查看>>
分布式缓存负载均衡负载均衡的缓存处理:虚拟节点对一致性hash的改进
查看>>
分布式存储系统设计(1)—— 系统架构
查看>>
MySQL数据库的高可用方案总结
查看>>
常用排序算法总结(一) 比较算法总结
查看>>
SSH原理与运用
查看>>
SIGN UP BEC2
查看>>