您的位置:首页 > 运维架构

【OpenCV学习】模板匹配

2012-12-07 16:12 459 查看
作者:gnuhpc
出处:http://www.cnblogs.com/gnuhpc/

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

int main( int argc, char** argv )
{
IplImage    *img;
IplImage    *tpl;
IplImage    *res;
CvPoint        minloc, maxloc;
double        minval, maxval;
int            img_width, img_height;
int            tpl_width, tpl_height;
int            res_width, res_height;

/* check for arguments */
if( argc < 3 ) {
fprintf( stderr, "Usage: template_match <reference> <template>/n" );
return 1;
}

/* load reference image */
img = cvLoadImage( argv[1], CV_LOAD_IMAGE_COLOR );

/* always check */
if( img == 0 ) {
fprintf( stderr, "Cannot load file %s!/n", argv[1] );
return 1;
}

/* load template image */
tpl = cvLoadImage( argv[2], CV_LOAD_IMAGE_COLOR );

/* always check */
if( tpl == 0 ) {
fprintf( stderr, "Cannot load file %s!/n", argv[2] );
return 1;
}

/* get image's properties */
img_width  = img->width;
img_height = img->height;
tpl_width  = tpl->width;
tpl_height = tpl->height;
res_width  = img_width - tpl_width + 1;
res_height = img_height - tpl_height + 1;

/* create new image for template matching computation */
res = cvCreateImage( cvSize( res_width, res_height ), IPL_DEPTH_32F, 1 );

/* choose template matching method to be used */
cvMatchTemplate( img, tpl, res, CV_TM_SQDIFF );
cvMinMaxLoc( res, &minval, &maxval, &minloc, &maxloc, 0 );

/* draw red rectangle */
cvRectangle( img,
cvPoint( minloc.x, minloc.y ),
cvPoint( minloc.x + tpl_width, minloc.y + tpl_height ),
cvScalar( 0, 0, 255, 0 ), 1, 0, 0 );

/* display images */
cvNamedWindow( "reference", CV_WINDOW_AUTOSIZE );
cvNamedWindow( "template", CV_WINDOW_AUTOSIZE );
cvShowImage( "reference", img );
cvShowImage( "template", tpl );

/* wait until user press a key to exit */
cvWaitKey( 0 );

/* free memory */
cvDestroyWindow( "reference" );
cvDestroyWindow( "template" );
cvReleaseImage( &img );
cvReleaseImage( &tpl );
cvReleaseImage( &res );

return 0;
}


作者:gnuhpc

出处:http://www.cnblogs.com/gnuhpc/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: