diff --git a/modules/features2d/src/orb.cpp b/modules/features2d/src/orb.cpp index b69354b786..cfee52c2b3 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 )