From 8444c2380371c8f27cf906ab419aeb12667bac30 Mon Sep 17 00:00:00 2001 From: Rostislav Vasilikhin Date: Wed, 14 Dec 2016 12:55:00 +0300 Subject: [PATCH] fixed segfault at ORB::compute() near image's border --- modules/features2d/src/orb.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/modules/features2d/src/orb.cpp b/modules/features2d/src/orb.cpp index b69354b..cfee52c 100644 --- a/modules/features2d/src/orb.cpp +++ b/modules/features2d/src/orb.cpp @@ -736,7 +736,9 @@ void ORB::operator()( InputArray _image, InputArray _mask, vector& _ke //ROI handling const int HARRIS_BLOCK_SIZE = 9; int halfPatchSize = patchSize / 2; - int border = std::max(edgeThreshold, std::max(halfPatchSize, HARRIS_BLOCK_SIZE/2))+1; + // sqrt(2.0) is for handling patch rotation + int descPatchSize = cvCeil(halfPatchSize*sqrt(2.0)); + int border = std::max(edgeThreshold, std::max(descPatchSize, HARRIS_BLOCK_SIZE/2))+1; Mat image = _image.getMat(), mask = _mask.getMat(); if( image.type() != CV_8UC1 ) -- 2.7.4