Формат результатов OpenCV DescriptorMatcher radiusMatch и knnMatch

Кто-нибудь знает, почему OpenCV 2 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 . Когда я просто рисую их, точки кажутся разбросанными, поэтому я думаю, что мне не хватает того, что представляют собой вложенные векторы.

9
задан Chris 17 March 2014 в 09:08
поделиться