Wir wissen, dass Ihre Schlüsselpunkte in kp1
und kp2
gespeichert sind, wo sie die Übereinstimmungen für das erste bzw. zweite Bild darstellen. In der Perspektive cv2.ORB
handelt es sich um 2D-Matrizen, bei denen jede Zeile ein Schlüsselpunkt ist, der im ersten Bild kp1
und im zweiten Bild kp2
erkannt wird.
In Ihrem Fall, weil Sie cv2.BFMatch
verwenden, gibt matches
eine Liste von cv2.DMatch
-Objekten zurück, wobei jedes Objekt mehrere Mitglieder enthält .... darunter sind zwei wichtige Mitglieder:
queryIdx
- Der Index oder die Zeile der kp1
Interessenpunktmatrix, die mit trainIdx
- Der Index oder die Zeile der kp2
Interessenpunktmatrix, die mit Daher sagen Ihnen queryIdx
und trainIdx
, welche ORB-Funktionen zwischen kp1
und kp2
übereinstimmen. Daher würden Sie diese verwenden, um in kp1
und kp2
zu indizieren und das pt
-Member zu erhalten, das ein Tupel von (x,y)
-Koordinaten ist, die die tatsächlichen räumlichen Koordinaten der Treffer bestimmen.
Alles, was Sie tun müssen, ist, jedes cv2.DMatch
-Objekt in matches
zu durchlaufen, an eine Liste von Koordinaten für kp1
und kp2
anzuhängen und Sie sind fertig.
In etwa so:
%Vor% Beachten Sie, dass ich einfach list_kp1.append(kp1[img1_idx].pt)
und dasselbe für list_kp2
hätte machen können, aber ich wollte klarstellen, wie die räumlichen Koordinaten zu interpretieren sind. Sie könnten auch einen Schritt weiter gehen und ein Listenverständnis machen:
list_kp1
enthält die räumlichen Koordinaten eines Feature-Punktes, der mit der entsprechenden Position in list_kp2
übereinstimmt. Mit anderen Worten: Das Element i
von list_kp1
enthält die räumlichen Koordinaten des Merkmalspunkts von img1
, die mit dem entsprechenden Merkmalspunkt aus img2
in list_kp2
übereinstimmten, deren räumliche Koordinaten im Element i
sind.
Als kleine Randbemerkung habe ich dieses Konzept verwendet, als ich einen Workaround für drawMatches
Schau es dir an, wenn du willst!
Modul 'Objekt hat kein Attribut' drawMatches ' opencv python
Tags und Links python opencv feature-detection image-processing matching