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
2.4.9 and 2.4.8 : Found 0 Keypoints
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.