Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

ORB not detecting any keypoint

I'm trying to detect keypoints with ORB everything is fine until I switched to Opencv 2.4.9.

Firts, it seems that the number of keys decresed, and for some images, no keypoints are detected :

This is my code compiled with two version : (2.3.1, 2.4.8 and 2.4.9)

#include <iostream>
#include <opencv2/opencv.hpp>
#include <opencv2/features2d/features2d.hpp>


using namespace cv;


int main(int argc, char **argv){

  Mat img = imread(argv[1]);

  std::vector<KeyPoint> kp;

  OrbFeatureDetector detector;
  detector.detect(img, kp);
  std::cout << "Found " << kp.size() << " Keypoints " << std::endl;

  Mat out;
  drawKeypoints(img, kp, out, Scalar::all(255));

  imshow("Kpts", out);

  waitKey(0);
  return 0;
}

Result : 2.3.1 : Found 152 Keypoints

kp detected

2.4.9 and 2.4.8 : Found 0 Keypoints

zero kpts

I also tested with a different ORB Constructor, but I get the same result, no KPts. The same constuctor values as in 2.3.1 default's constructor : 2.4.9 (2.4.8) custom constr :

#include <iostream>
#include <opencv2/opencv.hpp>
#include <opencv2/features2d/features2d.hpp>


using namespace cv;


int main(int argc, char **argv){

  Mat img = imread(argv[1]);

  std::vector<KeyPoint> kp;

  // default in 2.4.9 is : ORB(700, 1.2f, 3, 31, 0);
  OrbFeatureDetector detector(500, 1.2f, 8, 31, 0); // default values of 2.3.1
  detector.detect(img, kp);
  std::cout << "Found " << kp.size() << " Keypoints " << std::endl;
  Mat out;
  drawKeypoints(img, kp, out, Scalar::all(255));

  imshow("Kpts", out);

  waitKey(0);
  return 0;
}

Do you have any idea what's happening ? And how can I fix it ?

Thank you.

click to hide/show revision 2
retagged

updated 2014-05-04 03:46:08 -0600

berak gravatar image

ORB not detecting any keypoint

I'm trying to detect keypoints with ORB everything is fine until I switched to Opencv 2.4.9.

Firts, it seems that the number of keys decresed, and for some images, no keypoints are detected :

This is my code compiled with two version : (2.3.1, 2.4.8 and 2.4.9)

#include <iostream>
#include <opencv2/opencv.hpp>
#include <opencv2/features2d/features2d.hpp>


using namespace cv;


int main(int argc, char **argv){

  Mat img = imread(argv[1]);

  std::vector<KeyPoint> kp;

  OrbFeatureDetector detector;
  detector.detect(img, kp);
  std::cout << "Found " << kp.size() << " Keypoints " << std::endl;

  Mat out;
  drawKeypoints(img, kp, out, Scalar::all(255));

  imshow("Kpts", out);

  waitKey(0);
  return 0;
}

Result : 2.3.1 : Found 152 Keypoints

kp detected

2.4.9 and 2.4.8 : Found 0 Keypoints

zero kpts

I also tested with a different ORB Constructor, but I get the same result, no KPts. The same constuctor values as in 2.3.1 default's constructor : 2.4.9 (2.4.8) custom constr :

#include <iostream>
#include <opencv2/opencv.hpp>
#include <opencv2/features2d/features2d.hpp>


using namespace cv;


int main(int argc, char **argv){

  Mat img = imread(argv[1]);

  std::vector<KeyPoint> kp;

  // default in 2.4.9 is : ORB(700, 1.2f, 3, 31, 0);
  OrbFeatureDetector detector(500, 1.2f, 8, 31, 0); // default values of 2.3.1
  detector.detect(img, kp);
  std::cout << "Found " << kp.size() << " Keypoints " << std::endl;
  Mat out;
  drawKeypoints(img, kp, out, Scalar::all(255));

  imshow("Kpts", out);

  waitKey(0);
  return 0;
}

Do you have any idea what's happening ? And how can I fix it ?

Thank you.