OpenCV在限定的ROI中进行模版匹配问题,求指点!!
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OpenCV在限定的ROI中进行模版匹配问题,求指点!!相关的知识,希望对你有一定的参考价值。
我写了一个代码,是关于OpenCV模板匹配的,如果对整个图片进行模板匹配的话,效率很明显会很低,所以我就设置了两个ROI,其中roi1属于搜索范围,roi2属于是我想要匹配的模板,让roi2在roi1里面进行搜索,但是程序运行完之后,发现系统匹配的那个ROI 压根就不是我想要的结果,百思不得其解,希望懂的大牛给指点下,谢谢啦~~如何才能对一个图片中的两个ROI(其中一个被另外一个所包含的)区域进行匹配呢?请不要用IplImage类的,因为我用的是Mat类写的代码。
参考技术A 你把这块区域拷贝出来新建一个图像扫描不行吗?再说如果设置了ROI处理区域就是在这里面的啊!
放程序吧!
反正你这段程序也不涉及到什么高科技,放出来我给你看看。
OpenCV MatchTemplate 仅限于 roi
【中文标题】OpenCV MatchTemplate 仅限于 roi【英文标题】:OpenCV MatchTemplate limited to roi 【发布时间】:2013-08-08 07:30:58 【问题描述】:我的问题与在 OpenCV 中使用 matchTemplate
有关。我可以使用该功能在整个图像中查找模板。可以将“搜索区域”限制在图像内的受限区域,即使用 roi?我尝试在调用 matchTemplate
之前设置 roi,但这没有任何效果。
那么,你知道有什么方法可以将模板的搜索限制在图像的一个子区域吗?那是因为我知道我的目标只能在这个有限的区域内找到。
以下是直接取自 OpenCV 示例的一些代码:
void MatchingMethod( int, void* )
// Source image to display
Mat img_display;
img.copyTo( img_display );
// Create the result matrix
int result_cols = img.cols - templ.cols + 1;
int result_rows = img.rows - templ.rows + 1;
result.create( result_cols, result_rows, CV_32FC1 );
// Do the Matching and Normalize
img.adjustROI(100, 100, 500, 500);
matchTemplate( img, templ, result, match_method );
normalize( result, result, 0, 1, NORM_MINMAX, -1, Mat() );
// Localizing the best match with minMaxLoc
double minVal; double maxVal; Point minLoc; Point maxLoc;
Point matchLoc;
minMaxLoc( result, &minVal, &maxVal, &minLoc, &maxLoc, Mat() );
// For SQDIFF and SQDIFF_NORMED, the best matches are lower values. For all the other methods, the higher the better
if( match_method == CV_TM_SQDIFF || match_method == CV_TM_SQDIFF_NORMED )
matchLoc = minLoc;
else
matchLoc = maxLoc;
// Show me what you got
rectangle( img_display, matchLoc, Point( matchLoc.x + templ.cols , matchLoc.y + templ.rows ), Scalar::all(0), 2, 8, 0 );
rectangle( result, matchLoc, Point( matchLoc.x + templ.cols , matchLoc.y + templ.rows ), Scalar::all(0), 2, 8, 0 );
imshow( image_window, img_display );
imshow( result_window, result );
【问题讨论】:
一段代码可能显示你的尝试? 【参考方案1】:确定!
Rect roi( x,y,w,h );
matchTemplate( img( roi ), templ, result, method );
【讨论】:
以上是关于OpenCV在限定的ROI中进行模版匹配问题,求指点!!的主要内容,如果未能解决你的问题,请参考以下文章