From d1229efeec08df70760c29787b8469b5ab0bdefb Mon Sep 17 00:00:00 2001 From: Grigory Serebryakov Date: Mon, 1 Sep 2014 13:02:27 +0400 Subject: [PATCH] No output image resize in case of PNG dataset --- apps/haartraining/cvsamplesoutput.cpp | 38 +++++------------------------------ apps/haartraining/cvsamplesoutput.h | 5 +---- 2 files changed, 6 insertions(+), 37 deletions(-) diff --git a/apps/haartraining/cvsamplesoutput.cpp b/apps/haartraining/cvsamplesoutput.cpp index a2b7e26..6272904 100644 --- a/apps/haartraining/cvsamplesoutput.cpp +++ b/apps/haartraining/cvsamplesoutput.cpp @@ -113,9 +113,9 @@ bool PngDatasetOutput::init( const char* annotationsListFileName ) } bool PngDatasetOutput::write( const CvMat& img, - const CvRect& boundingBox ) + const CvRect& boundingBox ) { - CvRect bbox = scaleBoundingBox(cvGetSize(&img), boundingBox); + CvRect bbox = addBoundingboxBorder(boundingBox); sprintf( imgFileName, "%04d_%04d_%04d_%04d_%04d", @@ -148,44 +148,16 @@ bool PngDatasetOutput::write( const CvMat& img, bbox.y + bbox.height ); fclose( annotationFile ); - writeImage(img); + cvSaveImage( imgFullPath, &img); return true; } -void PngDatasetOutput::writeImage(const CvMat &img) const -{ - CvSize origsize = cvGetSize(&img); - - if( origsize.height > destImgHeight || origsize.width > destImgWidth ) - { - CvMat result = cvMat( destImgHeight, destImgWidth, CV_8UC1, - cvAlloc( sizeof( uchar ) * destImgHeight * destImgWidth ) ); - cvResize(&img, &result); - cvSaveImage( imgFullPath, &result ); - cvFree( &(result.data.ptr) ); - } - else - { - cvSaveImage( imgFullPath, &img); - } - - return; -} - -CvRect PngDatasetOutput::scaleBoundingBox(const CvSize& imgSize, const CvRect& bbox) +CvRect PngDatasetOutput::addBoundingboxBorder(const CvRect& bbox) const { - double scale = MAX( (float) destImgWidth / imgSize.width, - (float) destImgHeight / imgSize.height ); CvRect boundingBox = bbox; int border = 5; - if( scale < 1. ) - { - boundingBox.x = bbox.x * scale; - boundingBox.y = bbox.y * scale; - boundingBox.width = bbox.width * scale; - boundingBox.height = bbox.height * scale; - } + boundingBox.x -= border; boundingBox.y -= border; boundingBox.width += 2*border; diff --git a/apps/haartraining/cvsamplesoutput.h b/apps/haartraining/cvsamplesoutput.h index 90854ba..7941e73 100644 --- a/apps/haartraining/cvsamplesoutput.h +++ b/apps/haartraining/cvsamplesoutput.h @@ -20,10 +20,7 @@ private: virtual bool init(const char* annotationsListFileName ); - void writeImage( const CvMat& img ) const; - - CvRect scaleBoundingBox(const CvSize& imgSize, - const CvRect& bbox); + CvRect addBoundingboxBorder(const CvRect& bbox) const; private: char annotationFullPath[PATH_MAX]; -- 2.7.4