2017-06-28 1 views
-1

Ich muss speziell wissen, was die Zeile for m, n in matches tut, um es in C implementieren zu können. matches ist eine Matrix, aber welche Werte nehmen m und n und wie bewegen sie sich?Was bedeutet das für "m, n in Matches"?

Dies ist Python-Code ...

for m, n in matches: 
    if m.distance < 0.75*n.distance: 
     good.append([m]) 

HINWEIS In C++ matches ist ein std::vector<DMatch> und ist ein OpenCV-Programm.

Danke!

+2

Was ist der vollständige Typ von 'Übereinstimmungen' in der C++ - Version? In Python bedeutet "für m, n in Übereinstimmungen", dass "Übereinstimmungen" iterabel ist, wobei jedes Element ein Tupel oder eine Liste ist, die ein Wertepaar enthält, das Sie in der Schleife als "m" und "n" lesen. Also, dann in der C++ - Version, ist 'Übereinstimmungen' vom Typ 'Vektor >', 'Vektor >' oder etwas anderes? –

+0

SO Frage für [Mehrfachzuweisung] (https://stackoverflow.com/q/5182573/2823755). – wwii

+0

Ich illustrierte dies nur in https://stackoverflow.com/q/44771384 – hpaulj

Antwort

2

Ich vermute, Sie knnMatcher verwenden und nach dem Tutorial http://docs.opencv.org/3.0-beta/doc/py_tutorials/py_feature2d/py_matcher/py_matcher.html

m und n sind DMatch Objekte. Zwei Objekte werden zurückgegeben, da k=2 bei

matches = bf.knnMatch(des1,des2, k=2) zurückgegeben werden.

Wenn Sie den Wert von k-3 erhöhen, müssen Sie

for m,n,p in matches:

die Ergebnisse zu erfassen.

Die CPP-äquivalent von knnmatch liefert einen Vektor von Vektoren von DMatch als here

In der Tat gezeigt wird, wenn Sie m.queryIdx, m.trainIdx, n.queryIdx, n.trainIdx auszudrucken Sie ein Muster wie 264 323 264 490 siehe anzeigt, dass der gleiche Index in dem Abfragebild angepasst ist gegen andere Indizes im Trainingsbild.

+0

Danke für die Antwort. =) –

0

m und n sind die Werte, die bei jeder Iteration durch matches vorhanden sind. "Wie sie sich bewegen" hängt vom Typ von matches ab und welche Art von Iteration es bietet. Wenn es sich um eine Liste von Tupeln handelt, werden sie sich Element für Element direkt in der Liste nach unten bewegen.