我正在尝试使用Flann匹配器来匹配图像之间的特征。以下是几行代码:
vector<MatchesInfo> matches;
Ptr<FlannBasedMatcher> matcher(new flann::LshIndexParams(20, 10, 2));
matcher.knnMatch(afeatures.descriptors, bfeatures.descriptors, matches, 2);
这将生成以下错误:
类 "cv::P tr" 没有成员 "knnMatch">
我做错了什么?
试试这个:
vector<vector< DMatch >> knnMatches;
FlannBasedMatcher matcher;
matcher.knnMatch(desc1, desc2, knnMatches, 50);
如果使用 KNN,则还将使用劳氏比率来确定匹配之间的距离是否合适。还要确保描述符的类型为CV_32F
如果使用cv::Ptr
,则需要使用箭头指针:->
但是你使用了点指针:.
将代码更改为:
matcher->knnMatch(afeatures.descriptors, bfeatures.descriptors, matches, 2);