第七章 - 直方图与匹配 - 模板匹配(cvMatchTemplate)
来源:互联网 发布:java权限管理系统设计 编辑:程序博客网 时间:2024/05/04 16:37
模板匹配是通过在输入图像上滑动模板图像块对实际的图像块和输入图像进行匹配,应用场景:比如要在一堆图像中寻找指定人脸,就可以利用此算法在图像中找到此人脸的最佳匹配,确定相似度。并且可以利用函数cvMinMaxLoc()找到最佳匹配的位置。对于特定的应用来说,如视频中应用自动部分检测或跟踪(视频中的车牌识别),可以试试所有这些方法,找到最合适的method,这里要考虑算法的性能。
-----------------------------------------------------------------------------------------------
MatchTemplate
比较模板和重叠的图像区域
void cvMatchTemplate( const CvArr* image, const CvArr* templ, CvArr* result, int method );
- image
- 欲搜索的图像。它应该是单通道、8-比特或32-比特 浮点数图像
- templ
- 搜索模板,不能大于输入图像,且与输入图像具有一样的数据类型
- result
- 比较结果的映射图像。单通道、32-比特浮点数. 如果图像是 W×H 而 templ 是 w×h ,则 result 一定是 (W-w+1)×(H-h+1).
- method
- 指定匹配方法:
函数 cvMatchTemplate 与函数 cvCalcBackProjectPatch 类似。它滑动过整个图像 image, 用指定方法比较 templ 与图像尺寸为 w×h 的重叠区域,并且将比较结果存到 result 中。 下面是不同的比较方法,可以使用其中的一种 (I 表示图像,T - 模板, R - 结果. 模板与图像重叠区域 x'=0..w-1, y'=0..h-1 之间求和):
-----------------------------------------------------------------------------------------------
/*code*/
#include <highgui.h>#include <cxcore.h>#include <stdio.h>#include <cv.h>int main(int argc, char** argv){IplImage* src, *temp, *ftmp[6]; int i;if( argc == 3 ){//读入模板图像if( ( temp = cvLoadImage( argv[1], 1 ) ) == 0 ){printf( "Error on reading template %s\n", argv[1] );return -1;}//读入源图像if( ( src = cvLoadImage( argv[2], 1 ) ) == 0 ){printf( "Error on reading template %s\n", argv[2] );//return -1;}int patchx = temp -> width; //图像宽int patchy = temp -> height;int iwidth = src -> width - patchx + 1;int iheight = src -> height - patchy + 1;for( i = 0; i < 6; ++i ){ftmp[i] = cvCreateImage( cvSize( iwidth, iheight ), 32, 1 ); //创建显示图像,32位}//开始匹配for( i = 0; i < 6; ++i ){cvMatchTemplate( src, temp, ftmp[i], i ); //通过最后一个参数method来区分不同的匹配方法cvNormalize( ftmp[i], ftmp[i], 1, 0, CV_MINMAX ); //图像归一化}//显示cvNamedWindow( "Template", 0 );cvShowImage( "Template", temp );cvNamedWindow( "Image", 0 );cvShowImage( "Image", src );cvNamedWindow( "SQDIFF", 0 );cvShowImage( "SQDIFF", ftmp[0] );cvNamedWindow( "SQDIFF_NORMED", 0 );cvShowImage( "SQDIFF_NORMED", ftmp[1] );cvNamedWindow( "CCORR", 0 );cvShowImage( "CCORR", ftmp[2] );cvNamedWindow( "CCORR_NORMED", 0 );cvShowImage( "CCORR_NORMED", ftmp[3] );cvNamedWindow( "CCOEFF", 0 );cvShowImage( "CCOEFF", ftmp[4] );cvNamedWindow( "CCOEFF_NORMED", 0 );cvShowImage( "CCOEFF_NORMED", ftmp[5] );cvWaitKey(0);}else;return 0;}
-----------------------------------------------------------------------------------------------
/*result*/
source imagetemplate face image
the result image of six method
- 第七章 - 直方图与匹配 - 模板匹配(cvMatchTemplate)
- opencv 模板匹配(cvMatchTemplate)
- cvMatchTemplate() 模板匹配
- opencv 模板匹配(cvMatchTemplate)
- opencv第七章-直方图与匹配
- opencv中cvMatchTemplate模板匹配
- opencv第七章-直方图与匹配(2)
- opencv 第七章《直方图与匹配》 知识点整理、总结
- 第七章 学习OpenCV——直方图与匹配
- OpenCV中的模板匹配函数:cvMatchTemplate
- 模板匹配函数cvMatchTemplate中的…
- 模板匹配函数cvMatchTemplate中的…
- 模板匹配函数cvMatchTemplate中的…
- 模板匹配函数cvMatchTemplate中的…
- opencv关于模板匹配cvMatchTemplate的运用
- Opencv的cvMatchTemplate模板匹配根据阈值判断匹配
- 第七章 - 直方图与匹配 - 直方图的计算与显示(cvCalcHist)
- 直方图与匹配
- 3:(C#下使用GDAL库)打开影像文件并读取基本信息
- C语言学习
- 找工作..网易篇
- mmap
- 使用eclipse+DevC++完成JNI调用(2)
- 第七章 - 直方图与匹配 - 模板匹配(cvMatchTemplate)
- 我在百度的90%搜索,第一项都是百度自己的内容
- 通过ASP与ACCESS数据库建立连接
- Android学习笔记(四四):第三方Java库的使用
- jasperreports不能使用spring而使用普通servlet来显示图片
- ipv4的私有地址
- 景城网10天内,收录多3000,外链减少3000,有懂的进来看下~!
- ExtJS 4 官方指南翻译:Component 组件
- Name与x:Name的关系--转载