Ich benutze die Sift-Implementierung zusammen mit Code in der "Programming Computer Vision with Python" gefunden.Python: Sift Punkte zeichnen gibt Punkte von den Bildern zurück
Während der plotMatches Funktion in vision.py (äquivalent zu dem plot_matches() Funktion zum Buch) verwenden, einige der eingezeichneten Punkte sind nicht einmal auf dem Bild:
Wie Sie sehen können, die meisten Punkte sind nicht auf dem Bild.
Dies ist das Ergebnis einer Änderung kann ich meine plotMatches machen musste() Funktion:
for i, m in enumerate(matchscores):
if i > 0:
lab.plot([locs1[i][1], locs2[i][1] + cols1],
[locs1[i][0], locs2[i][0]], 'c')
Der ursprüngliche Code:
for i, m in enumerate(matchscores):
if i > 0:
lab.plot([locs1[i][1], locs2[m][1] + cols1],
[locs1[i][0], locs2[m][0]], 'c')
den folgenden Fehler werfen würde:
Traceback (most recent call last):
File "/home/peter-brown/AI/Markus/ImageRecognition.py", line 37, in <module>
sch.plotMatches(image, image2, l1, l2, matches, show_below=False)
File "/home/peter-brown/AI/Markus/vision.py", line 199, in plotMatches
lab.plot([locs1[i][1], locs2[m][1] + cols1],
IndexError: index 1 is out of bounds for axis 0 with size 1
Durch die Änderung eines 'm' im Code, das Programm würde funktionieren, aber es würde falsch ausgeben.
Warum stimmt die Ausgabe nicht mit dem Bild überein und wie kann ich die Funktion plotMatches ändern?