我正在尝试使用ORB检测关键点,一切都很好,直到我切换到OpenCV 2.4.9。
首先,似乎关键点的数量减少了,对于一些图像,没有检测到关键点:
这是我的代码编译两个版本: (2.3.1 和 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;
}
结果: 2.3.1: 发现152个关键点
2.4.9: 发现0个关键点
我还尝试了不同的ORB构造器,但是得到了相同的结果,没有KPts。与2.3.1默认构造器相同的构造器值:
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;
// 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;
}
你有任何想法这是怎么发生的吗?我该如何修复它?
谢谢。