SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: arvsander8 en Sábado 18 de Octubre de 2008, 18:30

Título: OPENCV y trackbar con clases
Publicado por: arvsander8 en Sábado 18 de Octubre de 2008, 18:30
Hola a la gente del foro,
Tengo una consulta, estoy trabajandon con opencv y c++, y probe unos ejemplos de trackbar que me funcionan correctamente, pero al adecuarlo dentro de una clase me sale este error en el cvCreateTrackbar

cvCreateTrackbar( tbarname, wndname, &tr->edge_thresh, 255,(tr->on_trackbar ));

ERROR: cannot convert parameter 5 from 'void (int)' to 'void (__cdecl *)(int)'

Si alguien tiene alguna idea se lo agradeceria mucho
Título: Re: OPENCV y trackbar con clases
Publicado por: Eternal Idol en Sábado 18 de Octubre de 2008, 18:36
Seguramente tengas hacer el metodo on_trackbar estatico ya que los callbacks no pueden pasarte el valor del objeto this.
Título: Re: OPENCV y trackbar con clases
Publicado por: arvsander8 en Sábado 18 de Octubre de 2008, 21:24
gracias por la respuesta

Efectivamente tuve q crear una funcion global para el on_trackbar la que llama recien a mi funcion en la clase.

Aun que esto no es una solucion optima puede servir.

De todos modos me gustaria saber si de alguna forma se podria trabajar esta funcion dentro de la clase, ya que tengo problemas al pasar parametros desde mi clase a la funcion global.

Nos vemos
Título: Re: OPENCV y trackbar con clases
Publicado por: Eternal Idol en Sábado 18 de Octubre de 2008, 23:52
Podes usar un metodo de la clase pero tiene que ser ESTATICO y por lo tanto carecer de this, normalmente las funciones de callback permiten pasar un parametro que es justamente el objeto en cuestion y despues la funcion de callback recibe y puede trabajar con el usando un casting pero no veo donde se pueda hacer con esta funcion (cvCreateTrackbar). Salvo que ese int que recibe on_trackbar sea para ese proposito ...
Título: Re: OPENCV y trackbar con clases
Publicado por: arvsander8 en Domingo 19 de Octubre de 2008, 01:55
Gracias nuevamente por la aclaracion

El int q recibe justamente es el que permite el casting
Ahora empezare a probar con el metodo estatico


Gracias nuevamente y cualquier duda tambien estoy para servir.