merged bug fix from r8179 (ORB_GPU)
authorVladislav Vinogradov <no@email>
Wed, 25 Apr 2012 09:23:16 +0000 (09:23 +0000)
committerVladislav Vinogradov <no@email>
Wed, 25 Apr 2012 09:23:16 +0000 (09:23 +0000)
modules/gpu/src/orb.cpp

index a69547a..e3a0c92 100644 (file)
@@ -568,13 +568,19 @@ void cv::gpu::ORB_GPU::computeKeyPointsPyramid()
     {\r
         keyPointsCount_[level] = fastDetector_.calcKeyPointsLocation(imagePyr_[level], maskPyr_[level]);\r
 \r
+        if (keyPointsCount_[level] == 0)\r
+            continue;\r
+\r
         ensureSizeIsEnough(3, keyPointsCount_[level], CV_32FC1, keyPointsPyr_[level]);\r
 \r
         GpuMat fastKpRange = keyPointsPyr_[level].rowRange(0, 2);\r
         keyPointsCount_[level] = fastDetector_.getKeyPoints(fastKpRange);\r
 \r
-        int n_features = n_features_per_level_[level];\r
-        \r
+        if (keyPointsCount_[level] == 0)\r
+            continue;\r
+\r
+        int n_features = static_cast<int>(n_features_per_level_[level]);\r
+\r
         if (scoreType_ == ORB::HARRIS_SCORE)\r
         {\r
             // Keep more points than necessary as FAST does not give amazing corners\r
@@ -613,6 +619,9 @@ void cv::gpu::ORB_GPU::computeDescriptors(GpuMat& descriptors)
 \r
     for (int level = 0; level < nLevels_; ++level)\r
     {       \r
+        if (keyPointsCount_[level] == 0)\r
+            continue;\r
+\r
         GpuMat descRange = descriptors.rowRange(offset, offset + keyPointsCount_[level]);\r
 \r
         if (blurForDescriptor)\r
@@ -650,6 +659,9 @@ void cv::gpu::ORB_GPU::mergeKeyPoints(GpuMat& keypoints)
     \r
     for (int level = 0; level < nLevels_; ++level)\r
     {\r
+        if (keyPointsCount_[level] == 0)\r
+            continue;\r
+\r
         float sf = getScale(scaleFactor_, firstLevel_, level);\r
 \r
         GpuMat keyPointsRange = keypoints.colRange(offset, offset + keyPointsCount_[level]);        \r