【发布时间】:2012-02-29 22:19:04
【问题描述】:
有谁知道为什么 OpenCV 2 DescriptorMatcher::radiusMatch() 和 knnMatch() 采用 vector<vector<DMatch>>& matches?我有点困惑为什么它不只是一个向量,因为它只是场景中对应于训练图像的单个点数组,对吧?
我有这样的东西:
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 中,对象的位置。当我刚刚绘制它们时,这些点对我来说似乎是分散的,所以我想我错过了嵌套向量所代表的内容。
【问题讨论】:
标签: c++ opencv computer-vision