From 0a7a75a245cef68b227e618b52db81c576df3573 Mon Sep 17 00:00:00 2001 From: Davis King Date: Sat, 26 Aug 2017 08:49:19 -0400 Subject: [PATCH] Added a version of resize_image() that works inplace. --- dlib/image_transforms/interpolation.h | 23 +++++++++++++++++++ .../image_transforms/interpolation_abstract.h | 22 ++++++++++++++++++ 2 files changed, 45 insertions(+) diff --git a/dlib/image_transforms/interpolation.h b/dlib/image_transforms/interpolation.h index 44d239be3..3b4a71b6b 100644 --- a/dlib/image_transforms/interpolation.h +++ b/dlib/image_transforms/interpolation.h @@ -1007,6 +1007,29 @@ namespace dlib resize_image(in_img, out_img, interpolate_bilinear()); } +// ---------------------------------------------------------------------------------------- + + template < + typename image_type + > + void resize_image ( + double size_scale, + image_type& img + ) + { + // make sure requires clause is not broken + DLIB_ASSERT( size_scale > 0 , + "\t void resize_image()" + << "\n\t Invalid inputs were given to this function." + << "\n\t size_scale: " << size_scale + ); + + image_type temp; + set_image_size(temp, std::round(size_scale*num_rows(img)), std::round(size_scale*num_columns(img))); + resize_image(img, temp); + swap(img, temp); + } + // ---------------------------------------------------------------------------------------- template < diff --git a/dlib/image_transforms/interpolation_abstract.h b/dlib/image_transforms/interpolation_abstract.h index b324e1a4f..1d0f71a7b 100644 --- a/dlib/image_transforms/interpolation_abstract.h +++ b/dlib/image_transforms/interpolation_abstract.h @@ -414,6 +414,28 @@ namespace dlib - Uses the bilinear interpolation to perform the necessary pixel interpolation. !*/ +// ---------------------------------------------------------------------------------------- + + template < + typename image_type + > + void resize_image ( + double size_scale, + image_type& img + ); + /*! + requires + - image_type == an image object that implements the interface defined in + dlib/image_processing/generic_image.h + - pixel_traits::pixel_type>::has_alpha == false + ensures + - Resizes img so that each of it's dimensions are size_scale times larger than img. + In particular, we will have: + - #img.nr() == std::round(size_scale*img.nr()) + - #img.nc() == std::round(size_scale*img.nc()) + - #img == a bilinearly interpolated copy of the input image. + !*/ + // ---------------------------------------------------------------------------------------- template <