OpenCV 2.3 mit VS 2008 - Mausereignisse

8

Obligatorisch - Ich bin ein Neuling. Habe einen Job, der Programmierung beinhaltet, und ich lehre mich selbst, wie ich gehe. Unnötig zu sagen, dass ich als Lehrer oft und gründlich Fehler mache.

Wo ich gerade bin: Ich habe die Klasse "Graph" erstellt, sie macht (überraschenderweise) Graphen. Aber jetzt möchte ich es so machen, dass ich mit einem Mausklick den Graphen modifiziere. Aber ich kann nicht scheinen, dass ein Maus-Handler eine Mitgliedsfunktion der Klasse ist.

%Vor%

Funktioniert nicht mit

%Vor%

Es gibt mir fehlende Parameterfehler. Laut dies kann ich es nicht machen Mitgliedsfunktion. Nachdem ich die gegebene Antwort befolgt habe, kompiliert es, aber mein this -Zeiger wird gelöscht. Ugh.

OnMouse sieht so aus:

%Vor%

Es ist mir egal, das Fenster zu verschieben, ich möchte den Graph selbst ändern - der als cv :: Mat-Variable in einem Graph-Objekt gespeichert ist. Und ich kann nicht herausfinden, wie es geht.

Jede Hilfe wäre willkommen, und ich hoffe wirklich, dass das nicht nur Kauderwelsch war.

    
Russbear 21.07.2011, 19:28
quelle

2 Antworten

11

Ja Callback-Funktionen in C ++ sind eine Freude, nicht wahr? Sie müssen OpenCV tatsächlich eine Funktion (keine Klassenmethode) geben, wie Sie bereits herausgefunden haben. Sie können jedoch diese Scheußlichkeit mit der folgenden Technik hacken:

%Vor%

Dieser letzte Parameter von setMouseCallback ist sehr nützlich, um einige der Probleme zu lösen, denen Sie normalerweise begegnen.

    
Chris Eberle 21.07.2011, 19:45
quelle
1

Sie können die onMouse-Methode auch als statische Methode verwenden.

%Vor%

Jetzt sollten Sie in der Lage sein, die Methode onMouse mit aufzurufen:

%Vor%

Der Parameter kann NULL sein oder was auch immer Sie als Parameter an die Methode übergeben möchten, aber Sie müssen eine Typumwandlung zum gewünschten Typ vornehmen.

Ich hoffe, das war nützlich. Tschüss.

    
André Toshio 06.09.2011 18:00
quelle

Tags und Links