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..bdafb360dc 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 **/