有没有人碰巧知道为什么OpenCV 2 DescriptorMatcher::radiusMatch()
和knnMatch()
需要vector<vector<DMatch>>& matches
?我对它为什么不只是一个向量有点困惑,因为它只是场景中与训练图像对应的单个点阵列,对吧?OpenCV DescriptorMatcher radiusMatch和knnMatch结果格式
我有这样的事情:
void getMatchingPoints(
const vector<vector<cv::DMatch> >& matches,
const vector<cv::KeyPoint>& keyPtsTemplates,
const vector<cv::KeyPoint>& keyPtsScene,
vector<Vec2f>& ptsTemplate,
vector<Vec2f>& ptsScene
)
{
ptsTemplate.clear();
ptsScene.clear();
for (size_t k = 0; k < matches.size(); k++)
{
for (size_t i = 0; i < matches[k].size(); i++)
{
const cv::DMatch& match = matches[k][i];
ptsScene.push_back(fromOcv(keyPtsScene[match.queryIdx].pt));
ptsTemplate.push_back(fromOcv(keyPtsTemplates[match.trainIdx].pt));
}
}
}
,但我有点困惑如何实际映射约。对象的位置一旦我将它们全部放入ptsScene
。当我绘制它们时,这些点似乎分散给我,所以我想我错过了嵌套向量代表的东西。
非常彻底,非常感谢! – 2012-03-01 23:19:01