Commit d1229efe authored by Grigory Serebryakov's avatar Grigory Serebryakov

No output image resize in case of PNG dataset

parent 74d8527f
...@@ -115,7 +115,7 @@ bool PngDatasetOutput::init( const char* annotationsListFileName ) ...@@ -115,7 +115,7 @@ bool PngDatasetOutput::init( const char* annotationsListFileName )
bool PngDatasetOutput::write( const CvMat& img, bool PngDatasetOutput::write( const CvMat& img,
const CvRect& boundingBox ) const CvRect& boundingBox )
{ {
CvRect bbox = scaleBoundingBox(cvGetSize(&img), boundingBox); CvRect bbox = addBoundingboxBorder(boundingBox);
sprintf( imgFileName, sprintf( imgFileName,
"%04d_%04d_%04d_%04d_%04d", "%04d_%04d_%04d_%04d_%04d",
...@@ -148,44 +148,16 @@ bool PngDatasetOutput::write( const CvMat& img, ...@@ -148,44 +148,16 @@ bool PngDatasetOutput::write( const CvMat& img,
bbox.y + bbox.height ); bbox.y + bbox.height );
fclose( annotationFile ); fclose( annotationFile );
writeImage(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); cvSaveImage( imgFullPath, &img);
}
return; return true;
} }
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; CvRect boundingBox = bbox;
int border = 5; 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.x -= border;
boundingBox.y -= border; boundingBox.y -= border;
boundingBox.width += 2*border; boundingBox.width += 2*border;
......
...@@ -20,10 +20,7 @@ private: ...@@ -20,10 +20,7 @@ private:
virtual bool init(const char* annotationsListFileName ); virtual bool init(const char* annotationsListFileName );
void writeImage( const CvMat& img ) const; CvRect addBoundingboxBorder(const CvRect& bbox) const;
CvRect scaleBoundingBox(const CvSize& imgSize,
const CvRect& bbox);
private: private:
char annotationFullPath[PATH_MAX]; char annotationFullPath[PATH_MAX];
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment