So sparen Sie die Maus-position in den Variablen, die mit OpenCV und Python?
Bin ich mit Python und OpenCV für einige vision-Anwendung.
Ich muss sparen Maus-position in der Variablen und ich weiß nicht, wie.
Ich kann die aktuelle position der Maus auf drucken im Fenster, kann aber nicht speichern Sie es auf eine variable.
Mein problem ist ähnlich nur ich arbeite in python:
OpenCV Rückgabewert von Maus-callback-Funktion
Definiere ich meine Funktion wie folgt aus (für den Druck von Maus-position):
def mousePosition(event,x,y,flags,param):
if event == cv2.EVENT_MOUSEMOVE:
print x,y
Ich benutze es in meinem Programm so:
cv2.setMouseCallback('Drawing spline',mousePosition)
was ist das problem? was ist die Ausgabe? was ist Ihre Erwartung ?
InformationsquelleAutor page47250 | 2014-05-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Unten ist eine kleine modifizierte version von code aus : http://docs.opencv.org/trunk/doc/py_tutorials/py_gui/py_mouse_handling/py_mouse_handling.html#mouse-handling
Es speichert die position der Maus in globalen Variablen
ix,iy
. Jedes mal, wenn Sie doppelklicken Sie auf, es ändert sich der Wert auf den neuen Speicherort. Drücken Siea
drucken Sie den neuen Wert.Ich benutze Sie immer, wenn ich absolut muss. Nie dachte viel über die 'Protokolle' 🙂
Wenn Sie vermeiden möchten, globals und Sie schreiben funktionellen Stil in Python, können Sie mit lokalen ix und iy Variablen und fassen Sie in draw_circle einer Schließung, indem es eine lokale Funktion (Python verwendet pass-by-reference). Wenn Sie mit einem Objekt-orientierten Stil, Sie können Sie Kapseln von ix und iy in eine Klasse, die als Mitglieder und machen die draw_circle eine Methode auf einer Instanz der Klasse.
Ich denke, es wäre wirklich toll, wenn könnten Sie diesen Kommentar auf eine Antwort (mit Beispielen), und teilen Sie es hier (Persönlich) die ich auch gerne sehen, unterschiedliche Ansätze). Dann können die Leute wählen Sie, was Ansatz, den Sie mögen. Sie können das gleiche Beispiel in meiner Antwort und zeigen, wie es getan werden kann, ohne globals, die durch die zwei Methoden, die Sie erwähnt.
warum die Parameter in
def draw_circle(event,x,y,flags,param):
nie verwendet, aber das Programm funktioniert ?InformationsquelleAutor Abid Rahman K
Erstellen einer kleinen Klasse und dem hinzufügen der Koordinaten als Mitglied vermeidet Globale Variablen.
InformationsquelleAutor Mr Vinagi
Können Sie versuchen, diesen Code:
InformationsquelleAutor user5944131