From a97c2c838c702366bc650420003f79b0c2fd0464 Mon Sep 17 00:00:00 2001 From: Leonid Beynenson Date: Fri, 23 Mar 2012 12:06:49 +0000 Subject: [PATCH] Made small change which fixes the situation, when ORB does not find any descriptors on an image. Earlier ORB::operator() crashed in this case, since rowRange method was called for an empty matrix. --- modules/features2d/src/orb.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/modules/features2d/src/orb.cpp b/modules/features2d/src/orb.cpp index 4255cced17..d6c59de761 100644 --- a/modules/features2d/src/orb.cpp +++ b/modules/features2d/src/orb.cpp @@ -932,7 +932,12 @@ void ORB::operator()( InputArray _image, InputArray _mask, vector& _ke // Compute the descriptors if (do_descriptors) { - Mat desc = descriptors.rowRange(offset, offset + nkeypoints); + Mat desc; + if (!descriptors.empty()) + { + desc = descriptors.rowRange(offset, offset + nkeypoints); + } + offset += nkeypoints; // preprocess the resized image Mat& workingMat = imagePyramid[level];