1010#include " image_pyramid.h"
1111#include " ../simd.h"
1212#include " ../image_processing/full_object_detection.h"
13+ #include < limits>
1314
1415namespace dlib
1516{
@@ -1289,7 +1290,8 @@ namespace dlib
12891290 >
12901291 void upsample_image_dataset (
12911292 image_array_type& images,
1292- std::vector<std::vector<rectangle> >& objects
1293+ std::vector<std::vector<rectangle> >& objects,
1294+ unsigned long max_image_size = std::numeric_limits<unsigned long >::max()
12931295 )
12941296 {
12951297 // make sure requires clause is not broken
@@ -1304,11 +1306,14 @@ namespace dlib
13041306 pyramid_type pyr;
13051307 for (unsigned long i = 0 ; i < images.size (); ++i)
13061308 {
1307- pyramid_up (images[i], temp, pyr);
1308- swap (temp, images[i]);
1309- for (unsigned long j = 0 ; j < objects[i].size (); ++j)
1309+ if (images[i].size () <= max_image_size)
13101310 {
1311- objects[i][j] = pyr.rect_up (objects[i][j]);
1311+ pyramid_up (images[i], temp, pyr);
1312+ swap (temp, images[i]);
1313+ for (unsigned long j = 0 ; j < objects[i].size (); ++j)
1314+ {
1315+ objects[i][j] = pyr.rect_up (objects[i][j]);
1316+ }
13121317 }
13131318 }
13141319 }
@@ -1319,7 +1324,8 @@ namespace dlib
13191324 >
13201325 void upsample_image_dataset (
13211326 image_array_type& images,
1322- std::vector<std::vector<mmod_rect>>& objects
1327+ std::vector<std::vector<mmod_rect>>& objects,
1328+ unsigned long max_image_size = std::numeric_limits<unsigned long >::max()
13231329 )
13241330 {
13251331 // make sure requires clause is not broken
@@ -1334,11 +1340,14 @@ namespace dlib
13341340 pyramid_type pyr;
13351341 for (unsigned long i = 0 ; i < images.size (); ++i)
13361342 {
1337- pyramid_up (images[i], temp, pyr);
1338- swap (temp, images[i]);
1339- for (unsigned long j = 0 ; j < objects[i].size (); ++j)
1343+ if (images[i].size () <= max_image_size)
13401344 {
1341- objects[i][j].rect = pyr.rect_up (objects[i][j].rect );
1345+ pyramid_up (images[i], temp, pyr);
1346+ swap (temp, images[i]);
1347+ for (unsigned long j = 0 ; j < objects[i].size (); ++j)
1348+ {
1349+ objects[i][j].rect = pyr.rect_up (objects[i][j].rect );
1350+ }
13421351 }
13431352 }
13441353 }
@@ -1350,7 +1359,8 @@ namespace dlib
13501359 void upsample_image_dataset (
13511360 image_array_type& images,
13521361 std::vector<std::vector<rectangle> >& objects,
1353- std::vector<std::vector<rectangle> >& objects2
1362+ std::vector<std::vector<rectangle> >& objects2,
1363+ unsigned long max_image_size = std::numeric_limits<unsigned long >::max()
13541364 )
13551365 {
13561366 // make sure requires clause is not broken
@@ -1367,15 +1377,18 @@ namespace dlib
13671377 pyramid_type pyr;
13681378 for (unsigned long i = 0 ; i < images.size (); ++i)
13691379 {
1370- pyramid_up (images[i], temp, pyr);
1371- swap (temp, images[i]);
1372- for (unsigned long j = 0 ; j < objects[i].size (); ++j)
1373- {
1374- objects[i][j] = pyr.rect_up (objects[i][j]);
1375- }
1376- for (unsigned long j = 0 ; j < objects2[i].size (); ++j)
1380+ if (images[i].size () <= max_image_size)
13771381 {
1378- objects2[i][j] = pyr.rect_up (objects2[i][j]);
1382+ pyramid_up (images[i], temp, pyr);
1383+ swap (temp, images[i]);
1384+ for (unsigned long j = 0 ; j < objects[i].size (); ++j)
1385+ {
1386+ objects[i][j] = pyr.rect_up (objects[i][j]);
1387+ }
1388+ for (unsigned long j = 0 ; j < objects2[i].size (); ++j)
1389+ {
1390+ objects2[i][j] = pyr.rect_up (objects2[i][j]);
1391+ }
13791392 }
13801393 }
13811394 }
0 commit comments