From cafd90ae1b5dd08475a9826b133e952984de8820 Mon Sep 17 00:00:00 2001 From: Dan Oprea Date: Mon, 24 Jan 2022 09:40:22 +0100 Subject: [PATCH 1/2] https://github.com/opencv/opencv_contrib/issues/1578 --- modules/xphoto/src/inpainting.cpp | 3 +++ modules/xphoto/src/photomontage.hpp | 6 ++++++ 2 files changed, 9 insertions(+) diff --git a/modules/xphoto/src/inpainting.cpp b/modules/xphoto/src/inpainting.cpp index abbce4c4e2..d6a406ca62 100644 --- a/modules/xphoto/src/inpainting.cpp +++ b/modules/xphoto/src/inpainting.cpp @@ -281,6 +281,9 @@ namespace xphoto /** Writing result **/ for (size_t i = 0; i < labelSeq.size(); ++i) { + if (pPath[i].x >= img.cols || pPath[i].y >= img.rows) + continue; + cv::Vec val = pointSeq[i][labelSeq[i]]; img.template at >(pPath[i]) = val; } diff --git a/modules/xphoto/src/photomontage.hpp b/modules/xphoto/src/photomontage.hpp index 2f790b4887..eacc3715ec 100644 --- a/modules/xphoto/src/photomontage.hpp +++ b/modules/xphoto/src/photomontage.hpp @@ -132,6 +132,12 @@ template void Photomontage :: setWeights(GCGraph &graph, const int idx1, const int idx2, const int l1, const int l2, const int lx) { + if ((size_t)idx1 >= pointSeq.size() || (size_t)idx2 >= pointSeq.size() + || (size_t)l1 >= pointSeq[idx1].size() || (size_t)l1 >= pointSeq[idx2].size() + || (size_t)l2 >= pointSeq[idx1].size() || (size_t)l2 >= pointSeq[idx2].size() + || (size_t)lx >= pointSeq[idx1].size() || (size_t)lx >= pointSeq[idx2].size()) + return; + if (l1 == l2) { /** Link from A to B **/ From 6350c0be3c1b7a2a75ef6cf82f22655737a444ce Mon Sep 17 00:00:00 2001 From: Dan Oprea Date: Tue, 25 Jan 2022 09:02:32 +0100 Subject: [PATCH 2/2] https://github.com/opencv/opencv_contrib/pull/3157 : Fix tailing spaces --- modules/xphoto/src/photomontage.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/xphoto/src/photomontage.hpp b/modules/xphoto/src/photomontage.hpp index eacc3715ec..bdafb360dc 100644 --- a/modules/xphoto/src/photomontage.hpp +++ b/modules/xphoto/src/photomontage.hpp @@ -132,10 +132,10 @@ template void Photomontage :: setWeights(GCGraph &graph, const int idx1, const int idx2, const int l1, const int l2, const int lx) { - if ((size_t)idx1 >= pointSeq.size() || (size_t)idx2 >= pointSeq.size() + if ((size_t)idx1 >= pointSeq.size() || (size_t)idx2 >= pointSeq.size() || (size_t)l1 >= pointSeq[idx1].size() || (size_t)l1 >= pointSeq[idx2].size() || (size_t)l2 >= pointSeq[idx1].size() || (size_t)l2 >= pointSeq[idx2].size() - || (size_t)lx >= pointSeq[idx1].size() || (size_t)lx >= pointSeq[idx2].size()) + || (size_t)lx >= pointSeq[idx1].size() || (size_t)lx >= pointSeq[idx2].size()) return; if (l1 == l2)