I use OpenCv to find the area that matches the pattern in the reference image. When the code finds the region matches the pattern, draw a rectangle around the region, but what I want is when the code does not find the region, the code does not draw any rectangle.
the code:
IplImage *res;
CvPoint minloc, maxloc;
double minval, maxval;
int img_width, img_height;
int tpl_width, tpl_height;
int res_width, res_height;
NSString *path = [[NSBundle mainBundle] pathForResource:@"reference" ofType:@"jpg"];
reference.image = [UIImage imageWithContentsOfFile:path];
NSString *pathPatron = [[NSBundle mainBundle] pathForResource:@"template" ofType:@"jpg"];
template.image = [UIImage imageWithContentsOfFile:pathPatron];
IplImage *img = [self CreateIplImageFromUIImage:original.image];
IplImage *tpl = [self CreateIplImageFromUIImage:patron.image];
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;
res = cvCreateImage( cvSize( res_width, res_height ), IPL_DEPTH_32F, 1 );
cvMatchTemplate( img, tpl, res, CV_TM_SQDIFF );
cvMinMaxLoc( res, &minval, &maxval, &minloc, &maxloc, 0 );
cvRectangle( img,
cvPoint( minloc.x, minloc.y ),
cvPoint( minloc.x + tpl_width, minloc.y + tpl_height ),
cvScalar( 0, 0, 255, 0 ), 1, 0, 0 );
reference.image = [self UIImageFromIplImage:img];
cvReleaseImage(&img);
cvReleaseImage(&tpl);
cvReleaseImage(&res);
Thanks in advance
source
share