OpenCV DescriptorMatcher radiusMatch et knnMatch format de résultat

Quelqu'un arrive à savoir pourquoi le OpenCV 2 DescriptorMatcher::radiusMatch() et knnMatch() prendre un vector<vector<DMatch>>& matches? Je suis un peu confus au sujet de pourquoi il ne serait pas juste d'un vecteur, puisqu'il suffit d'un seul tableau de points dans la scène qui correspondent à la formation de l'image, à droite?

J'ai quelque chose comme ceci:

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));
        }
    }
}

mais je suis un peu confus sur la façon de faire la carte de l'env. l'emplacement de l'objet une fois que je les ai tous dans ptsScene. Les points semblent dispersés à moi quand je viens de les dessiner, donc je pense que je suis absent ce imbriquées les vecteurs représentent.

InformationsquelleAutor Joshua Noble | 2012-02-29