From eace415f57d8e9fe0b16ab59ddb1e1a159ba4d0e Mon Sep 17 00:00:00 2001 From: Maria Dimashova Date: Fri, 10 Jun 2011 12:19:23 +0000 Subject: [PATCH] fixed cascade detection on images of size equal to feature size (#1070) --- modules/objdetect/src/cascadedetect.cpp | 10 +++++----- modules/objdetect/src/haar.cpp | 6 +++--- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/modules/objdetect/src/cascadedetect.cpp b/modules/objdetect/src/cascadedetect.cpp index 06f561c..696db7b 100644 --- a/modules/objdetect/src/cascadedetect.cpp +++ b/modules/objdetect/src/cascadedetect.cpp @@ -649,8 +649,8 @@ bool HaarEvaluator::setImage( const Mat &image, Size _origWinSize ) bool HaarEvaluator::setWindow( Point pt ) { if( pt.x < 0 || pt.y < 0 || - pt.x + origWinSize.width >= sum.cols-2 || - pt.y + origWinSize.height >= sum.rows-2 ) + pt.x + origWinSize.width >= sum.cols || + pt.y + origWinSize.height >= sum.rows ) return false; size_t pOffset = pt.y * (sum.step/sizeof(int)) + pt.x; @@ -812,8 +812,8 @@ bool LBPEvaluator::setImage( const Mat& image, Size _origWinSize ) bool LBPEvaluator::setWindow( Point pt ) { if( pt.x < 0 || pt.y < 0 || - pt.x + origWinSize.width >= sum.cols-2 || - pt.y + origWinSize.height >= sum.rows-2 ) + pt.x + origWinSize.width >= sum.cols || + pt.y + origWinSize.height >= sum.rows ) return false; offset = pt.y * ((int)sum.step/sizeof(int)) + pt.x; return true; @@ -1203,7 +1203,7 @@ void CascadeClassifier::detectMultiScale( const Mat& image, vector& object Size windowSize( cvRound(originalWindowSize.width*factor), cvRound(originalWindowSize.height*factor) ); Size scaledImageSize( cvRound( grayImage.cols/factor ), cvRound( grayImage.rows/factor ) ); - Size processingRectSize( scaledImageSize.width - originalWindowSize.width, scaledImageSize.height - originalWindowSize.height ); + Size processingRectSize( scaledImageSize.width - originalWindowSize.width + 1, scaledImageSize.height - originalWindowSize.height + 1 ); if( processingRectSize.width <= 0 || processingRectSize.height <= 0 ) break; diff --git a/modules/objdetect/src/haar.cpp b/modules/objdetect/src/haar.cpp index 80a1722..001ed1e 100644 --- a/modules/objdetect/src/haar.cpp +++ b/modules/objdetect/src/haar.cpp @@ -673,8 +673,8 @@ cvRunHaarClassifierCascadeSum( const CvHaarClassifierCascade* _cascade, "Use cvSetImagesForHaarClassifierCascade" ); if( pt.x < 0 || pt.y < 0 || - pt.x + _cascade->real_window_size.width >= cascade->sum.width-2 || - pt.y + _cascade->real_window_size.height >= cascade->sum.height-2 ) + pt.x + _cascade->real_window_size.width >= cascade->sum.width || + pt.y + _cascade->real_window_size.height >= cascade->sum.height ) return -1; p_offset = pt.y * (cascade->sum.step/sizeof(sumtype)) + pt.x; @@ -1095,7 +1095,7 @@ cvHaarDetectObjectsForROC( const CvArr* _img, CvSize winSize = { cvRound(winSize0.width*factor), cvRound(winSize0.height*factor) }; CvSize sz = { cvRound( img->cols/factor ), cvRound( img->rows/factor ) }; - CvSize sz1 = { sz.width - winSize0.width, sz.height - winSize0.height }; + CvSize sz1 = { sz.width - winSize0.width + 1, sz.height - winSize0.height + 1 }; CvRect equRect = { icv_object_win_border, icv_object_win_border, winSize0.width - icv_object_win_border*2, -- 2.7.4