OpenCV drawMatches - queryIdx und trainIdx

8

Dies ist OpenCVs Funktion drawMatches() :

%Vor%

Beachten Sie, dass matches vom Typ vector<DMatch> ist. Hier ist der DMatch -Konstruktor:

%Vor%

Vermutlich ist queryIdx ein Index in eine Menge von Schlüsselpunkten und trainIdx ist ein Index in die andere Menge von Schlüsselpunkten.

Die Frage: Stimmt es, dass queryIdx in keypoints1 und trainIdx in keypoints2 indexiert? Oder ist es umgekehrt?

    
solvingPuzzles 10.11.2012, 03:08
quelle

2 Antworten

18

Das hängt davon ab, wie Sie matches erhalten.

Wenn Sie die Match-Funktion in der folgenden Reihenfolge aufrufen:

%Vor%

dann bezieht sich queryIdx auf keypoints1 und trainIdx bezieht sich auf keypoints2 oder umgekehrt.

    
luhb 10.11.2012, 07:06
quelle
1

Die Variable " entspricht " ist eine Liste von DMatch-Objekten .

Wenn wir über diese Liste von DMatch-Objekten iterieren, hat jedes Element die folgenden Attribute:

  1. item.distance : Dieses Attribut gibt uns den Abstand zwischen den Deskriptoren. Ein geringerer Abstand bedeutet eine bessere Übereinstimmung.
  2. item.trainIdx : Dieses Attribut gibt uns den Index des Deskriptors in der Liste der Zugdeskriptoren (in unserem Fall ist es die Liste der Deskriptoren im img2).
  3. item.queryIdx : Dieses Attribut gibt uns den Index des Deskriptors in der Liste der Abfragedeskriptoren (in unserem Fall ist es die Liste der Deskriptoren im img1).
  4. item.imgIdx : Dieses Attribut gibt uns den Index des Zugbildes.
gsdf 20.12.2015 11:14
quelle