Estoy implementando una DLL para el asunto de mi tesis, eso de reconocer los gestos de manera monocular. Para ello necesito que mi programa sea una DLL que va a cargarse en otro programa al cual no tengo ningun acceso (uhm Closed Source, si!, maldicion!). Bueno, ya logré que se cargue, estuve analizando la DLL antigua y logré que mi DLL embonara en lo que el programito me pide.
Basicamente mi DLL debe exportar una única función importante la cual entrega coordenadas 3D. La primera vez que es llamada debe inicializarse sola y comenzar el rastreo. El modo de funcionamiento es el siguiente:
- (*) Aplicación pide coordenadas
- DLL debe:
- Si es primera vez. Responde (0,0,0) y lanza Thread par comenzar rastreo.
- Si no es primera vez. Responde con (x,y,z). El thread debería tenerlas ya detectadas.
- Avisar al thread cuando debe morirse.
- Ir a: (*)
El trabajo del Thread es el siguiente:
- Abrir cámara con resolución correcta (o morirse diciendo que no hay cámaras).
- Para cada FRAME capturado:
- Detectar objeto y obtener sus coordenadas.
- Actualizar variable global: coord = (x,y,z). (global solo en la DLL)
- En caso de aviso de muerte:
- Cerrar cámara correctamente
- Morirs y liberar recursos
Parece muy fácil. Aja!, tengo varios dias atorado en la manera de anunciar al Thread que ya debe morirse. No se si sea OpenCV el que no cierra la cámara o el Thread que no se muere. Ya me estoy hartando, y lo malo es que estaba acostumbrado a que en Linux y OSS en general hay forums de IRC donde ayudan, pero busqué en freenet y no encontré nada decente para ambientes de Microsoft. Continue reading ‘¿Quien es el culpable el Thread o cvCam?’
