From fd27d5ea00c47ef05e7a345fd55e379c28eb7b29 Mon Sep 17 00:00:00 2001 From: Quentin Chateau Date: Tue, 18 Dec 2018 12:43:05 +0100 Subject: [PATCH] Merge pull request #13449 from Tytan:stitching-warp-interpolation Stitching: added functions to set warp interpolation mode (#13449) * Added functions to set warp interpolation mode * Use InterpolationFlags enum * Improved getter/setter naming --- modules/stitching/include/opencv2/stitching.hpp | 4 ++++ modules/stitching/src/stitcher.cpp | 5 +++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/modules/stitching/include/opencv2/stitching.hpp b/modules/stitching/include/opencv2/stitching.hpp index c58360a731..0cda452d7a 100644 --- a/modules/stitching/include/opencv2/stitching.hpp +++ b/modules/stitching/include/opencv2/stitching.hpp @@ -193,6 +193,9 @@ public: CV_WRAP bool waveCorrection() const { return do_wave_correct_; } CV_WRAP void setWaveCorrection(bool flag) { do_wave_correct_ = flag; } + CV_WRAP InterpolationFlags interpolationFlags() const { return interp_flags_; } + CV_WRAP void setInterpolationFlags(InterpolationFlags interp_flags) { interp_flags_ = interp_flags; } + detail::WaveCorrectKind waveCorrectKind() const { return wave_correct_kind_; } void setWaveCorrectKind(detail::WaveCorrectKind kind) { wave_correct_kind_ = kind; } @@ -289,6 +292,7 @@ private: double seam_est_resol_; double compose_resol_; double conf_thresh_; + InterpolationFlags interp_flags_; Ptr features_finder_; Ptr features_matcher_; cv::UMat matching_mask_; diff --git a/modules/stitching/src/stitcher.cpp b/modules/stitching/src/stitcher.cpp index 8fa214d8c0..df8b4c8df0 100644 --- a/modules/stitching/src/stitcher.cpp +++ b/modules/stitching/src/stitcher.cpp @@ -55,6 +55,7 @@ Ptr Stitcher::create(Mode mode) stitcher->setSeamFinder(makePtr(detail::GraphCutSeamFinderBase::COST_COLOR)); stitcher->setBlender(makePtr(false)); stitcher->setFeaturesFinder(ORB::create()); + stitcher->setInterpolationFlags(INTER_LINEAR); stitcher->work_scale_ = 1; stitcher->seam_scale_ = 1; @@ -185,7 +186,7 @@ Stitcher::Status Stitcher::composePanorama(InputArrayOfArrays images, OutputArra K(1,1) *= (float)seam_work_aspect_; K(1,2) *= (float)seam_work_aspect_; - corners[i] = w->warp(seam_est_imgs_[i], K, cameras_[i].R, INTER_LINEAR, BORDER_REFLECT, images_warped[i]); + corners[i] = w->warp(seam_est_imgs_[i], K, cameras_[i].R, interp_flags_, BORDER_REFLECT, images_warped[i]); sizes[i] = images_warped[i].size(); w->warp(masks[i], K, cameras_[i].R, INTER_NEAREST, BORDER_CONSTANT, masks_warped[i]); @@ -297,7 +298,7 @@ Stitcher::Status Stitcher::composePanorama(InputArrayOfArrays images, OutputArra int64 pt = getTickCount(); #endif // Warp the current image - w->warp(img, K, cameras_[img_idx].R, INTER_LINEAR, BORDER_REFLECT, img_warped); + w->warp(img, K, cameras_[img_idx].R, interp_flags_, BORDER_REFLECT, img_warped); LOGLN(" warp the current image: " << ((getTickCount() - pt) / getTickFrequency()) << " sec"); #if ENABLE_LOG pt = getTickCount();