我正在尝试使用检测器 ORB 获取图像中的关键点,但总是出现异常和崩溃,我的代码是下一个。
vector < KeyPoint > kp;
int nfeatures = 500;
float scaleFactor = 1.2f;
int nlevels = 8;
int edgeThreshold = 15;
int firstLevel = 0;
int WTA_K = 2;
int scoreType = ORB::HARRIS_SCORE;
int patchSize = 31;
int fastThreshold = 20;
Ptr < ORB > detector = ORB::create(
nfeatures,
scaleFactor,
nlevels,
edgeThreshold,
firstLevel,
WTA_K,
scoreType,
patchSize,
fastThreshold );
detector->detect(img, kp);
cout << "Found " << kp.size() << " Keypoints " << std::endl;
Mat out;
drawKeypoints(img, kp, out, Scalar::all(255));
imshow("Kpts", out);
img 是提前声明的,问题是何时做检测器->检测(img,kp);而且我不知道是什么问题,我正在尝试其他形式的操作,但在调用检测()时都会崩溃。
我尝试使用 BRISK,并且在检测崩溃的调用中问题是相同的。为了简化,我轻快地做了下一个:
Ptr < BRISK > detector = BRISK::create();
vector <KeyPoint> kp;
detector->detect(img,kp);
这让人恼火。
我在带有 Windows 10 的 Visual Studio 2015 中使用 opencv 3。
对不起我的英语,谢谢你的回答。