OpenCV mit EventHandler und Variablen richtig verwenden



  • Hallo c-Community,

    habe wieder ein Problem. Ich arbeite mit OpenCV und habe auf einem Window ein EventHandler, den ich gern in eine ExtraDatei auslagern möchte. Der MouseHandler wird wie folgt bei mir declariert.

    //	Fenster für Ausgabe
    	cvNamedWindow("Name", CV_WINDOW_AUTOSIZE);
    	// MouseEvent setzen
    	cvSetMouseCallback("Name", MouseObjectDetectHandler, NULL);
    

    Die Eventfunktion hat folgenden Aufbau:

    void MouseObjectDetectHandler(int event, int x, int y, int flags, void *param)
    {
    	if (event == CV_EVENT_LBUTTONDOWN)  
    	{
    		uchar* ptr = &CV_IMAGE_ELEM(COLOR_IMAGE,uchar,y,x*3);
    		// Es wird der Wert in ptr[0] benötigt!
    		HSI_Hue_Value = (int)ptr[0]
    	}
    }
    

    Wenn alles in einer Datei ("*.c") liegt ist es kein Problem, da sind die Variablen HSI_HUE_Value und COLOR_IMAGE definiert. Wenn ich die jetzt auslager, ist dies ja nicht mehr der Fall. Leider sehe ich aber auch keine Möglichkeit die Variablen im Funktionskopf mitzugeben. Wie müsste ich vorgehen, dass die Variablen auch in der Extradatei erkannt werden, oder dass ich die Variablen der Funktion mitgeben kann?

    MfG
    mirrowwinger



  • Ich kenne OpenCV nicht. Aber der Parameter param sieht mir ganz danach aus, dass du dem Handler Werte mitgeben kannst.

    Die andere Möglichkeit ist, dass du dich mal über die Anwendung des C-Schlüsselwortes "extern" schlau machst.


Anmelden zum Antworten