ORB crashed with no keypoints present
authorPhilLab <PhilLab@users.noreply.github.com>
Fri, 22 Aug 2014 19:00:41 +0000 (21:00 +0200)
committerPhilLab <PhilLab@users.noreply.github.com>
Sat, 23 Aug 2014 12:02:15 +0000 (14:02 +0200)
modules/features2d/src/orb.cpp

index 57bce1c..983b2dd 100644 (file)
@@ -49,7 +49,8 @@ template<typename _Tp> inline void copyVectorToUMat(const std::vector<_Tp>& v, O
 {
     if(v.empty())
         um.release();
-    Mat(1, (int)(v.size()*sizeof(v[0])), CV_8U, (void*)&v[0]).copyTo(um);
+    else
+        Mat(1, (int)(v.size()*sizeof(v[0])), CV_8U, (void*)&v[0]).copyTo(um);
 }
 
 static bool
@@ -805,6 +806,10 @@ static void computeKeyPoints(const Mat& imagePyramid,
     std::vector<Vec3i> ukeypoints_buf;
 
     nkeypoints = (int)allKeypoints.size();
+    if(nkeypoints == 0)
+    {
+        return;
+    }
     Mat responses;
     UMat ukeypoints, uresponses(1, nkeypoints, CV_32F);