2017-01-25 6 views
0

Ich habe einen einfachen Algorithmus für die visuelle Markierungserkennung mit OpenCV auf Python gebaut, die ihren ORB-Detektor als zweiten Schritt verwendet. Ich benutze ORB mit dem BFmatcher, wird der Code aus diesem Projekt entlehnt: https://rdmilligan.wordpress.com/2015/03/01/road-sign-detection-using-opencv-orb/ Der Erfassungsteil in dem Code wie folgt aussieht:exakte Position der Übereinstimmung mit OpenCV ORB Matcher

# find the keypoints and descriptors for object 
kp_o, des_o = orb.detectAndCompute(obj,None) 
if len(kp_o) == 0 or des_o == None: continue 

# match descriptors 
matches = bf.match(des_r,des_o) 

Dann gibt es eine Überprüfung der Anzahl der Spiele,, so dass er sagen kann, wenn eine Übereinstimmung zwischen dem Vorlagenbild und der Abfrage besteht. Die Frage ist: Wenn ja, wie bekomme ich genaue Position und Drehwinkel des gefundenen Spiels?

+0

berechnen Sie die Homographie und zerlegen Sie sie. – Micka

Antwort

0

Die Position ist bei diesem Schritt bereits bekannt. Es wird in den Variablen x und y gespeichert. Um die Drehung zu finden, verwischen Sie sowohl die Vorlage als auch die Quelle, erstellen Sie dann entweder 360 gedrehte Darstellungen der unscharfen Vorlage und suchen Sie dann diejenige mit der geringsten Abweichung von der interessierenden Region oder konvertieren Sie beide Bilder in Polarkoordinaten und versuchen Sie, eine davon zu verschieben die Bilder, um die beste Mathematik zu erreichen (die Verschiebung ist der Winkel, um den Sie drehen möchten).

+0

Welche X- und Y-Variablen meinen Sie genau? Wenn Sie den Rotationsvergleich durchführen, wird die Übereinstimmung erneut ausgeführt, was etwas redundant aussieht. – Nolemocius

+0

Versuchen Sie, das Programm auszuführen, für das Sie die Verknüpfung bereitgestellt haben, und überprüfen Sie die Werte von 'x' und' y' Variablen während der Laufzeit. –

Verwandte Themen