OpenCV DescriptorMatcher radiusMatch und knnMatch Ergebnis-format

Weiß jemand zufällig, warum die OpenCV-2 DescriptorMatcher::radiusMatch() und knnMatch() nehmen vector<vector<DMatch>>& matches? Ich bin ein wenig verwirrt darüber, warum Sie würde nicht nur einen Vektor, da es nur ein einzelnes array von Punkten in der Szene entsprechen, die für die Ausbildung Bild, richtig?

Ich habe so etwas wie dieses:

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

aber ich bin ein wenig verwirrt darüber, wie man eigentlich die Karte ca. Lage das Objekt einmal habe ich Sie alle in ptsScene. Die Punkte scheinen zerstreut zu mir, wenn ich nur zeichnen, also ich glaube, ich bin fehlt, was die verschachtelte Vektoren stellen.

InformationsquelleAutor Joshua Noble | 2012-02-29
Schreibe einen Kommentar