Bennu Game Development

Foros en Español => Extensiones => Topic started by: grisendo on November 22, 2009, 04:19:55 PM

Title: Módulo de visión por computador
Post by: grisendo on November 22, 2009, 04:19:55 PM
Hola a todos,

El motivo mi post anterior era crear un módulo para Bennu para poder realizar operaciones de visión por computador.
Tras pegarme rato intentando hacer que compilase en mi Ubuntu de 64 bits, tiré la toalla, reinicié en Windows XP
y conseguí acoplar todo, así que solo tengo hecha la librería para windows en DLL.

A mí me funciona, en el ordenador de mi hermano también... pero a valmontwindgate se lo he pasado y no le rula,
le dice que le falta una DLL (la que he creado yo, opencv.dll) que le dice que no la encuentra (pero está ahi!!!)

Está basado en OpenCV, las funciones que incluye de momento son las que vienen en el main.prg:

// Abrir la webcam. Si solo tenemos una es la 0, si hay más se puede elegir, devuelve un ID de la cámara
camara=openCam(0);

// Obtener un fotograma de la camara, y devuelve el números de caras del fotograma
// Guarda el fotograma con las caras en "salida.jpg"
// Esta funcion evidentemente es de prueba, no tiene mucho sentido xDD tal y como está
// No es que sea lento pillando imágenes de la cámara, es un bucle que tengo ahí dentro metido
// para esperar a que se inicialice la cámara, si no sale fotograma negro.

caras=getFaces(int idCamara);

// Cerrar la cámara con el ID
closeCam(idCamara);

Descarga del ejemplo (sin código fuente por el momento):
http://www.grisendo.com/subidas/opencv.rar


A ver si a vosotros os funciona, y conseguís explicarnos por qué a valmontwindgate no xDD
Title: Re: Módulo de visión por computador
Post by: Drumpi on November 22, 2009, 05:52:42 PM
¿Exactamente qué es lo que hace la librería? ¿tomar una foto con la webcam y recotar las caras de los que aparezcan?

Si es eso, me interesa el tema de cómo lo hace y cómo has obtenido la información, porque estoy intentando hacer lo mismo pero reconociendo palabras y se me están agotando las fuentes de consulta :S
Title: Re: Módulo de visión por computador
Post by: grisendo on November 22, 2009, 06:09:55 PM
De momento la librería hace:

Abre el controlador de la webcam, toma una imagen, pinta en ella recuadros verdes sobre lo que detecta que son caras y la guarda en "salida.jpg", devolviendo el número de caras encontradas, y finalmente cierra la cámara. Quiero "liberarla" cuando pueda convertir del formato de imágenes que utilizo actualmente al que utiliza bennu en funciones del tipo "load_png()" (si alguien me echa un cable diciéndome como se llama la estructura o dónde está se lo agradecería, porque ando muy liado y me ahorraría trabajo en ir buscando por el código).

La verdad que la función de detectar caras está muy mal hecha (lo siento, ando un poco liado), tengo que utilizar otra que haga filtrado de tamaño y detecte ojos, boca, etc... Pero la idea es que la librería haga más cosas, entre ellas la que tú dices (como los sistemas que leen matrículas en los parkings). La visión por computador es un campo muy amplio.

¿Qué más se podría hacer? En primer lugar juegos tipo los de la webcam de PS2. Se me ocurre también un piedra-papel-tijera (o piedra-papel-tijera-lagarto-spock para los más freaks xDD), generación automática de mapas de durezas a partir de imágenes, control del ratón o de un personaje con la mirada o movimiento de cabeza, reconocimiento de estado de ánimo del usuario, obtención de texturas de la cara del usuario para ponerle a un personaje 3D... el límite lo pone la imaginación (y el tiempo para investigar sobre cómo implementar estos temas, claro :P).

Sobre cómo he obtenido la información... pues unas cuantas asignaturas de imágenes y visión por computador donde aprendí lo básico y un proyecto fin de carera sobre detección facial, muchas horas de leerme libros, artículos del IEEE y tal... si quieres información te puedo dar bibligrafía.
Title: Re: Módulo de visión por computador
Post by: FreeYourMind on November 22, 2009, 06:13:11 PM
Ha funcionado!!! Esto promete hehehehehehe  ;D
Muchas grácias, karma up :)

Nota: No pongo la foto porque estaba en pelotas  ;D ;D
Title: Re: Módulo de visión por computador
Post by: FreeYourMind on November 22, 2009, 06:16:36 PM
Si me envias info como compilar en Windows que es el que uso, te puedo echar un cable, ya que estoy pensando en ponerme tambien con la creación de modulos, y todavia no he intentado compilar Bennu.

Sobre lo de controlar el ordenador con los ojos, mi instituto es pionero en ello en Portugal, compis mios se hicieron cargo del proyecto y es un autentico exito, igual podriamos tener una alternativa grátis con Bennu :)

http://www.magickey.ipg.pt/
Title: Re: Módulo de visión por computador
Post by: Windgate on November 22, 2009, 06:27:54 PM
Este módulo promete y mucho, lástima que me da un error a compilar, pero creo que es problema de algún virus que tengo y de la cantidad de días que llevo sin reiniciar Windows, se lo he pasado a amigos y les funciona a todos OK.

De momento toma mi karma, sé que te lo has trabajado a tope, a ver si le puedo sacar partido :P
Title: Re: Módulo de visión por computador
Post by: grisendo on November 22, 2009, 11:26:27 PM
Si quieres información para crear librerías mejor por privado, ¿no?

Yo la verdad que igual estoy metiendo la pata y compilando con bibliotecas viejas y tal,
así que igual no te es muy útil (no iban a sacar un tutorial pronto sobre eso?)

A ver si alguien me cuenta como crear tipos de datos GRAPH o lo que sea necesario
(los que utilizan los procesos y los load_png()) porque no los entiendo, debo de hacer
algo mal que me peta.

De momento tengo esto, pero ya digo que me peta:

static int toGraph(INSTANCE *my, int *params){
    GRAPH *graph;
    Mi_imagen* image;
    image=(Mi_imagen*)params[0];
    graph=bitmap_new(0,image->width,image->height,image->channels);
    return((int)graph);
}
Title: Re: Módulo de visión por computador
Post by: grisendo on November 23, 2009, 12:29:22 AM
Acabo de subir una pequeña actualización mejorada de la detección de caras (http://www.grisendo.com/subidas/opencv.rar)

Resultado:

(http://www.grisendo.com/subidas/salida.jpg)
Title: Re: Módulo de visión por computador
Post by: FreeYourMind on November 23, 2009, 01:01:32 AM
Ya te la envie (no se porque no me sale en el outbox!).
Title: Re: Módulo de visión por computador
Post by: Drumpi on November 23, 2009, 01:26:57 AM
Agradecería muchísimo esa bibliografía, a ver si por lo menos, para salir del paso, puedo hacer que reconozca comandos de una persona, y luego ya me liaré a investigar la descomposición en frecuencias, reconocimiento de palabras y demás variables del habla.

Por otro lado, no busques la función load_png, Bennu, si sigue como Fenix, usa internamente el formato MAP con más variables, así que busca la función NEW_MAP y ve tirando del hilo, es que no recuerdo el nombre de la estructura interna. Te lo digo porque estuve mirando eso intentando recompilar una vieja librería que no iba porque cambió esa estructura y no se por qué.
Title: Re: Módulo de visión por computador
Post by: SplinterGU on November 23, 2009, 02:37:06 AM
si no lo resuelves en los proximos dias te dare una mano... ando un poco ocupado estos dias... estamos a punto de entregar nuestro primer trabajo en nuestra propia empresa, y estoy liado un poco... pero ya renuncie a mi actual trabajo asi que en 15 dias estare con algo de tiempo...
Title: Re: Módulo de visión por computador
Post by: grisendo on November 23, 2009, 01:06:14 PM
Subo el primer juego de Bennu que utiliza la librería OpenCV (versión pre-pre-pre-pre-alfa). Por cierto, se admiten nombres
para la librería (BeOpenCV no me termina de convencer).

El juego en sí es una chorrada, plantas el careto delante de la webcam, ni muy cerca ni muy lejos, y manejas un escudo con
el movimiento de la cabeza (movimientos leves, no bruscos, porque no tengo cogidas las resoluciones, si no el escudo desaparece
de la pantalla). El objetivo es coger monedas, cuantas más monedas más puntos. Si tocas una poción morada, se termina el juego.

Sí, lo se, premio al juego menos imaginativo del año xD

La resolución de la cámara ha de ser 320x200 (no sé por qué a mí no me deja cambiarla)

El link el de siempre:
http://www.grisendo.com/subidas/opencv.rar
Title: Re: Módulo de visión por computador
Post by: l1nk3rn3l on November 23, 2009, 02:18:35 PM
si esta libreria es excelente la habia visto en irrlicht ,

pero hacerla directamente para 2D en bennu es mucho mejor osease multiproposito ...

publica los fuentes que los subire con el bennupack


Gracias..   :o
Title: Re: Módulo de visión por computador
Post by: SplinterGU on November 24, 2009, 01:58:50 AM
no la he probado aun, pero maldito desgraciado... suena fantastico...

saludos.

obviamente estas aumentando tu karma... felicitaciones
Title: Re: Módulo de visión por computador
Post by: l1nk3rn3l on November 24, 2009, 05:28:44 PM
tengo sugerencia:
- no me funciona como deberia .. debe ser por el color a buscar..

- puedes poner una funcion adicional que encuentre la coordenada de un color en particular
asi podriamos usar circulos de colores en la camara para mover diferentes cosas..

http://www.youtube.com/watch?v=6jKCFBVLFxE&feature=related
Title: Re: Módulo de visión por computador
Post by: FreeYourMind on November 24, 2009, 07:21:29 PM
grisendo, mis mensajes privados estan fucnionando ??  :-\
Title: Re: Módulo de visión por computador
Post by: Windgate on November 24, 2009, 07:39:21 PM
@l1nk3rn3l: Esa sería una de las grandes cosas que se pueden hacer con este módulo, mover un volante moviendo sólamente las manos delante de la cam y cosas así xD
Title: Re: Módulo de visión por computador
Post by: grisendo on November 24, 2009, 07:58:59 PM
Quote from: FreeYourMind on November 24, 2009, 07:21:29 PM
grisendo, mis mensajes privados estan fucnionando ??  :-\

Sí. Si mi memoria no me falla te envié un ejemplo, ¿No te ha llegado? Luego intento re-enviártelo, que ando un poco liado últimamente...

Quote from: l1nk3rn3l on November 24, 2009, 05:28:44 PM
tengo sugerencia:
- no me funciona como deberia .. debe ser por el color a buscar..

- puedes poner una funcion adicional que encuentre la coordenada de un color en particular
asi podriamos usar circulos de colores en la camara para mover diferentes cosas..

http://www.youtube.com/watch?v=6jKCFBVLFxE&feature=related

El ejemplo no busca color, va con formas. Pero se pueden hacer cosillas con color también, de hecho
tengo más manejo con el color que con la detección de patrones... Me pondré a ello cuando pueda.

Ahora en el juego, el principal problema es que cada vez que llamo a la función, busco la
cara, en toda la imagen sin tener en cuenta información del fotograma anterior, y esto no es muy eficiente.
Estoy intentando que se haga detección la primera vez y seguimiento en el resto (que será mucho más
rápido y no bailará). Lo tengo ya hecho, pero me da un error que no hay forma de arreglar (y ahora no tengo
mucho tiempo, me voy mañana de viaje) en cuanto vuelva me pongo a saco.

Quote from: Drumpi on November 22, 2009, 05:52:42 PM
¿Exactamente qué es lo que hace la librería? ¿tomar una foto con la webcam y recotar las caras de los que aparezcan?

Si es eso, me interesa el tema de cómo lo hace y cómo has obtenido la información, porque estoy intentando hacer lo mismo pero reconociendo palabras y se me están agotando las fuentes de consulta :S

Te mandé ya la bibliografía? Ten en cuenta que yo de sonido no he tocado casi nada, yo todo lo que sé es de imágenes...


Os enviaría el código ya para lo del pack, pero lo veo tan verde que es posible que haya que reestructurar muchas cosas...
No es plan de que la gente empiece a usar una librería experimental que luego cambie radicalmente la forma de trabajar con
ella y no sea compatible ni de lejos.

Mientras estoy fuera, podéis sugerir cosas (como la del color) y funciones que os gustaría que apareciesen.
Por ejemplo, para lo del color podría ser algo así:

objetos=funcionQueDevuelveObjetosDeColor(color, margen); // RGB, HSV; YCbCr... el espacio de color que sea

for(i=0;i<size(objetos);i++){
   objeto=getObjeto(objetos,i);
   x=getX(objeto);
   y=getY(objeto);
   width=getWidth(objeto);
   angle=getAngulo(objeto);
   ....
}

Title: Re: Módulo de visión por computador
Post by: FreeYourMind on November 24, 2009, 08:10:43 PM
No llego!
De mi parte puedes poner las cosas por aqui.
Nosotros somos como hermanos y nos gustan las cosas grátis, y compartir entre nosotros (algunas cosas claro :)).
No tenemos pena de los pobres avergonzados que necesiten venir a curiosear y llevarse algo  ;D

Ahora si prefieres que sea privado, mi palabra es la de total confidencialidad  :P
Title: Re: Módulo de visión por computador
Post by: Windgate on November 24, 2009, 08:46:46 PM
QuoteAhora en el juego, el principal problema es que cada vez que llamo a la función, busco la
cara, en toda la imagen sin tener en cuenta información del fotograma anterior, y esto no es muy eficiente.

¿Eso es un tracking, no?

Se me ocurre que la próxima vez puedes buscar sólamente en un entorno de la última detección, y si no lo encuentras ponerte ya a buscar en toda la imagen... Supongo que por ahí van los tiros :P
Title: Re: Módulo de visión por computador
Post by: grisendo on November 24, 2009, 10:24:54 PM
Sí, es tracking :D

Sobre la bibliografía: vale, pongo la lista de bibliografía que usé para mi proyecto fin de carrera, porque
no me da tiempo a hacer una selección. Recomiendo para empezar leer [NTa06] (ojo, son transparencias de una asignatura,
es posible que no os enteréis de una mierda... xD), [Pit00], [GWo02]/[GWo04].

Bibliografía

       Bibliografía general de programación:

   [BKa08]     Learning OpenCV: computer vision with the OpenCV library. 2008
               G. Bradski, A. Kaehler

   [Gil03]     Introducción rápida a Matlab y Simulink para ciencia e ingeniería. 2003
               M. Gil (Editorial Díaz de Santos)

   [Joy06]     Programación en C++, algoritmos, estructura de datos y objetos. 2006
               L. Joyanes (Editorial McGraw-Hill)

   [Moo07]     Matlab para ingenieros. 2007
               H. Moore (Editorial Pearson)

   [Pal03]     Introduction Matlab 7 for engineers. 2003
               W. J. Palm (Editorial McGraw-Hill)

   [Per02]     Matlab y aplicaciones en ciencias y la ingeniería. 2002
               C. Perez (Editorial Prentice Hall)

   [RKe78]     El lenguaje de programación C. 1978
               D. M. Ritchie, B. Kernigan

   [XVa06]     Programación en C++ para ingenieros
               F. Xhafa, P. Vázquez, J. Marco, X. Molinero, A. Martín (Editorial Paraninfo)

       Bibliografía general de inteligencia artificial:

   [And07]     Computational Intelligence. 2007
               D. Andina (Editorial Springer)

   [Fau94]     Fundamentals of neural networks. 1994
               L. Fausett (Editorial Prentice Hall)

   [Gur97]     An introduction to neural networks. 1997
               K. Gurney (Editorial UCL Press)

   [Hay99]     Neural networks. 1999
               S. Haykin (Editorial Prentice Hall)

   [Kun93]     Digital neural networks. 1993
               S. Y. Kung (Editorial Prentice Hall)

   [Lau91]     Neural networks, theoretical foundations and analysis. 1991
               C. Lau

    Bibliografía general de procesamiento de imágenes:

[GMc00]     Dynamic vision: From images to face recognition. 2000
            S. Gong, S. J. McKenna, A. Psarrou (Editorial Imperial College Press)

[GWo02]     Digital image processing. 2002
            R. C. Gonzalez, R. E. Woods

[GWo04]     Digital image processing using Matlab. 2004
            R. C. Gonzalez, R. E. Woods, S. Eddins

[HLo01]     Face detection: A survey. 2001
            E. Hjelmas, B. K. Low

[NTa06]     Visión por computador. 2006
            http://webdiis.unizar.es/~neira/vision.html
            J. Neira, J. D. Tardós

[Pit00]     Digital image processing algorithms and applications. 2000
            I. Pitas

[SAn04]     Digital signal and image processing
            A. N. Skodras, V. Anastassopoulos (Editorial Hellenic Open University Press)

    Bibliografía citada en la memoria y anexos:

[BVe99]    A morphable model for the syntesis of 3D faces.
            International Conference on Computer Graphics and Interactive Techniques
            Proceedings of the 26th annual conference on Computer graphics and
            interactive techniques, pages: 187 – 194 (1999)
            V. Blanz, T. Vetter

[Cas02]     On real-time face detection in video streams. An opportunistic approach. 2002
            M. F. Castrillón

[Cro84]     Summed-area tables for texture mapping. 1984
            International Conference on Computer Graphics and Interactive Techniques
            Proceedings of the 11th annual conference on Computer graphics and
            Interactive techniques, pages: 207 – 212 (1984)
            F. Crow

[DNi95]     Evaluating the performance of active contour models for real-time
            object tracking. 1995
            J. Denzler, H. Niemann

[FSc95]    A decision-theoretic generalization of online learning and an application to
            boosting. Lecture Notes In Computer Science; Vol. 904.
            Proceedings of the Second European Conference on Computational Learning
            Theory, pages: 23 - 37 (1995)
            Y. Freund, R. E. Schapire

[FSc99]     A short introduction to boosting. Introduction to Adaboost.
            Journal of Japanese Society for Artificial Intelligence,
            14(5):771-780, September, 1999.
         Y. Freund, R. E. Schapire

[GNi96] Snake head boundary extraction using global and local energy
          Minimization. 13th International Conference on Pattern Recognition
         (ICPR) Volume 2, pp.581 (1996)
         S. R. Gunn, M. S. Nixon

[Kap97]  Face Detection in Color Images.
         University of Washington, Department of Electrical Engineering, pp. 1-7 (1997)
         J. P. Kapur

[KPe03]  Human Skin Colour Clustering for Face Detection.
         EUROCON 2003. Computer as a Tool. The IEEE Region 8 Volume 2,
         pages: 144- 148 (2003)
         J. Kovac, P. Peer, F. Solina

[KWi88] Active countour models.
         International Journal of Computer Vision Volume: 1
         Issue: 4, pages: 321-331 (1988)
         M. Kass, A. Witkin, D. Terzopoulos

[LAl07]  Detección de caras y localización de características faciales para
         Reconocimiento Biométrico. 2007
         I. Landesa, J. L. Alba

[LMo04] Finding optimal views for 3D face shape modeling.
         International Conference on Automatic Face and Gesture Recognition (2004)
         J. Lee, B. Moghaddam, H. Pfister, R. Machiraju

[MPi43] A logical calculus of the ideas immanent in nervous activity.
         Neurocomputing: foundations of research, pages: 15 – 27 (1943)
         W. S. McCulloch, W. H. Pitts

[Pap98] A general framework for object detection.
         Sixth International Conference on Computer Vision, pages: 555-562 (1998)
         C. Papageorgiou, M. Oren, T. Poggio

[Per03] Automatical detection of face features and exact face contour.
         Pattern Recognition Letters Volume 24, pages: 2977 – 2985 (2003)
         V. Perlibakas

[PVi03] Aplicación de los diferentes espacios de color para detección y seguimiento
         de caras. 2003
         C. Pérez, M. A. Vicente, C. Fernández, O. Reinoso, A. Gil

[RBa96]  Neural network-based face detection.
         IEEE Transactions On Pattern Analysis and Machine intelligence (1996)
         H. A. Rowley, S. Baluja, T. Kanade

[RMa95] Facial features segmentation by model-based snakes.
         International Conference on Computing Analysis and Image Processing (1995)
         P. Radeva, E. Martí

[Rom05]  Face image analysis using a multiple features fitting strategy.
         PhD Thesis, University of Basel, Faculty of Science (2005)
         S. Romdhani

[RTa05]  Un nuevo método para la detección de caras basado en integrals difusas.
         XII Simposium Nacional de la Unión Científica Internacional de Radio (2005)
         A. Rama, F. Tarrés

[SBa04] Face recognition in subspaces.
         S.Z. Li, A.K. Jain (Eds.), Handbook of Face Recognition (2004)
         G. Shakhnarovich, B. Moghaddam

[SKa00]  A statistical method for 3D object detection applied to faces and cars.
         IEEE Conference on Computer Vision and Pattern Recognition. Volume: 1
         Pages: 745-751 (2000)
         H. Schneiderman, T. Kanade

[Smi78]  Color gamut transform pairs.
         International Conference on Computer Graphics and Interactive Techniques
         Proceedings of the 5th annual conference on Computer graphics and
         interactive techniques, pages: 12-19 (1978)
         A. R. Smith

[SPi98]  A novel method for automatic face segmentation, facial features extraction
         and tracking.
         Signal processing. Image communicationol. 12, no3, pages: 263-281 (1998)
         K. Sobbotka, I. Pitas

[SRa02]  Human face detection in cluttered color images using skin color and
         edge information. 2002
         K. Sandeep, A. N. Rajagopalan

[SSh04]  An edge-based face detection algorithm robust against illumination, focus and
         scale variations.
         EUSIPCO. Conference No12, Vienna , AUTRICHE (2004)
         Y. Suzuki, T. Shibata

[Tor04]  Is there any hope for face recognition?
         Proc. of the 5th International Workshop on Image Analysis for Multimedia
         Interactive Services, WIAMIS, Lisboa, Portugal (2004)
         L. Torres

[TVi01]  Automatic face recognition for video indexing applications. 2001
         L. Torres, J. Vilà

[Uca07]  Face and eye detection in Matlab. 2007
         http://www.mathworks.co.uk/matlabcentral/fileexchange/13716
         M. Ucak

[VBe02]  Face detection for video summaries.
         Lecture Notes in Computer Science, volume 2383 (2002)
         J. E. Viallet, O. Bernier

[VJo01]  Rapid object detection using a boosted cascade of simple features. 2001
         IEEE Computer Society Conference on Computer Vision and
         Pattern Recognition. Volume: 1, pages: 511-518 (2001)
         P. Viola, M. Jones

[VJo03]  Robust real-time face detection.
         International Journal of Computer Vision, volume 57 , Issue 2 (2003)
         P. Viola, M. Jones

[YCi98] Enhancing human face detection using motion and active contours.
         Third Asian Conf. Computer Vision (1998)
         K. C. Yow, R. Cipolla

[Zar99]  Comparison of five color model skin pixel classification.
         ICCV'99 Int'l Workshop on recognition, analysis and tracking
         of faces and gestures in Real-Time systems, pages: 58–63 (1999)
         B. D. Zarit , B. J. Super, F. H. K. Quek

[ZCh02]  Face recognition: A literature survey. 2002
         W. Zhao, R. Chellappa, A.Rosenfeld, P. J. Phillips
Title: Re: Módulo de visión por computador
Post by: FreeYourMind on November 24, 2009, 10:50:03 PM
Me has dejado tonto, con esto:

Face and eye detection in Matlab.

Con el Matlab se puede hacer esto!!!

Yo lo tuve en la carrera, y no hacia nada más que simulaciones con gráficos, o este ha evolucionado mucho o nunca descubrimos sus virtudes  :P
Title: Re: Módulo de visión por computador
Post by: grisendo on November 24, 2009, 11:24:17 PM
Jajaja, sí, con Matlab se pueden hacer muchas cosas, en las carreras rara vez te enseñan sus virtudes...

Mi proyecto de hecho era en Matlab, se basaba en detección y ocultación de la cara en vídeos con
algoritmos de color (parte de Matlab) y con redes neuronales (integrando OpenCV en Matlab). Como
Matlab era lento de cojones también tuve que hacer DLL's en C con las funciones que más utilizaba.

Matlab para investigar está muy bien, tiene miles de funciones predefinidas, pero si quieres
velocidad de ejecución te toca tirar de C o C++... por eso triunfa más OpenCV aunque yo personalmente
lo veo miles de veces más complejo de usar :D
Title: Re: Módulo de visión por computador
Post by: Drumpi on November 25, 2009, 01:23:14 AM
Muchas gracias por la documentación, no me había llegado.
Si que has leido libros ¿el PFC es de una ingeniería técnica o superior? porque viendo eso, los proyectos que nos proponían eran juegos de niños en comparación :D
Según he estado leyendo, el reconocimiento de formas en imágenes hace uso de la FFT, por lo que pensé que la búsqueda de patrones en imágenes y sonidos era similar, salvo que una en 2D y la otra en 1D.
Seguramente lo mio sea mucho más sencillo, pero gracias de todas formas.

Respecto a qué hacer si la cámara reconociese formas, colores y movimientos, el campo es infinito, mucho más que si buscásemos métodos para usar el teclado. Esa era la pregunta que tenía inicialmente, porque si la librería sólo reconocía la cara se pueden hacer unas cosas, si encima reconoce movimientos del cuerpo...
Un ejemplo muy claro es lo que quise demostrar con FrikiMusic: una consola normal, cogida de otras formas, simulando instrumentos. No hablo de usar la cámara para ponerle nuestro careto al prota, o para reconocer que hacemos ejercicio correctamente, hay muchos usos.

De todas maneras, se puede simplificar mucho el trabajo de la siguiente forma:
-Cortamos dos círculos de cartulina de dos colores.
-Los sujetamos a las manos con esparadrapo, una cinta o lo que sea.
-Al principio del juego los situamos dentro de unas marcas.
-Y ya la librería nos devuelve las posiciones en cada frame. Y si mide el tamaño, la distancia.
Sólo con eso ya habría control "manual" para todos los juegos, y supongo que un algoritmo mucho más sencillo.
Title: Re: Módulo de visión por computador
Post by: grisendo on November 25, 2009, 01:55:14 PM
No te creas que me leí todo eso... la mitad de las cosas miré algo, de algunas ni me las miré y las puse
de relleno... jeje. Era ingeniería superior.

Lo de la FFT... pues sí, realmente los sonidos son vectores (una dimensión por canal) y las imágenes
son matrices (dos dimensiones por canal), se aplican cosas parecidas, entre ello la transformada de Fourier,
o, se me ocurre también, los histogramas. Pero la FFT no es el único método para las imágenes, también
hay muchos que no trabajan en el dominio de la frecuencia (al igual que me imagino que habrá más formas
de procesar los sonidos).

En OpenCV hay estructuras de matrices y de arrays, supongo que también las funciones para procesar
imágenes (matrices) se pueden utilizar también para procesar sonidos (vectores), como FFT, filtros de
paso alto/bajo, convolución, histogramas, etc...

Pero yo no tengo ni idea de sonido, y eso que aporreo el piano y la guitarra, aunque me gustaría aprender
las cosas básicas de procesado de la señal sonora, por eso también si pudieses poner alguna bibliografía
básica te lo agradecería.
Title: Re: Módulo de visión por computador
Post by: Drumpi on November 25, 2009, 05:10:03 PM
De momento los conocimientos que tengo se basan en lo que he estudiado en clase, y lo que he ido encontrando en wikipedia y unos cuantos enlaces.

La idea que tengo es que, por ejemplo, un silbido tiene una única componente sinusoidal, y en el dominio de la frecuencia se representa como una delta en dicha frecuencia, con una amplitud proporcional al volumen, un violín tiene por ejemplo tres deltas para un sonido. Por tanto, quiero buscar la forma en el dominio de la frecuencia del sonido de una persona, y analizar su traslación (variación de frecuencia) y su variación de amplitud (volumen) así como ver cómo se añaden o quitan armónicos para articular los diversos sonidos.
Con esas variaciones registradas, sólo necesitaría conocer la "huella vocal" de la persona para saber lo que dice, sin necesidad de un muestreo previo.
Pero me temo que tendré que buscar algo más sencillo.
Title: Re: Módulo de visión por computador
Post by: blostec on November 25, 2009, 08:37:50 PM
Quote from: FreeYourMind on November 24, 2009, 10:50:03 PM
Me has dejado tonto, con esto:

Face and eye detection in Matlab.

Con el Matlab se puede hacer esto!!!

Yo lo tuve en la carrera, y no hacia nada más que simulaciones con gráficos, o este ha evolucionado mucho o nunca descubrimos sus virtudes  :P

Yo tenia una asignatura en la que usábamos el Matlab para manipular gráficos y sonidos. Es un programa muy potente, incluso posee la herramienta GUIDE para crear programas con interfícies de usuario al mas puro estilo Visual Basic.
Title: Re: Módulo de visión por computador
Post by: josebita on November 25, 2009, 11:27:03 PM
Grisendo, tío. Como compartir es vivir, te acabo de mangar la imagen que has puesto del reconocimiento de tu cara para añadir una reseña al tanto de la librería para bennugd.org
Espero que no tengas inconveniente. Si tienes algún problema, avisa y busco otra.

Y ánimo con el proyecto, que tiene buena pinta. Por cierto, esta librería también añade soporte para webcams en Bennu, ¿no?.
Title: Re: Módulo de visión por computador
Post by: Windgate on November 26, 2009, 12:29:23 AM
Esta librería añade TODO lo relacionado con Webcam, grisendo es groso, he estudiado con él y lo sé a ciencia cierta.

Cuidado Grisen, vas a tenerle que ponerle licencia a tu cara tío ;D
Title: Re: Módulo de visión por computador
Post by: Drumpi on November 26, 2009, 12:52:17 AM
Por cierto, se me olvidó comentarlo.
Es verdad, Matlab es la herramienta PARA TODO. Nosotros, en clase lo hemos usado para el cálculo matemático de matrices y resolver algun límite o derivada a modo de ejemplo.
Pero luego hemos montado filtros (paso bajo, paso alto...), hemos controlado el movimiento de un motor (con una dll) y hemos creado hasta controladores PID.
Me han llegado a contar que se ha usado para controlar el posicionamiento de un satélite... y creo haberlo estudiado como "lenguaje de programación orientado al cálculo matemático".

El día que Google domine el mundo, Matlab será su peor enemigo :D :D :D
Title: Re: Módulo de visión por computador
Post by: l1nk3rn3l on November 26, 2009, 04:56:00 PM
en gameprogramming gems 6

se usa una tecnica de convertir a negativos para extraer las caras humanas
bajalo de aqui gratis:

y trae mas cosas interesantes para los que les encanta la lectura
http://www.taringa.net/posts/ebooks-tutoriales/2056163/Game-Programming-Gems-6.html
Title: Re: Módulo de visión por computador
Post by: blostec on November 26, 2009, 09:27:18 PM
Lo he probado y funciona aunque cuesta mover el puntero, normalmente se queda en un lado. No he sido capaz de coger ni una pócimas o moneda. Uso un portátil Acer con cámara web integrada Crystal Eye bajo Windows 7, por si te sirve de algo. Saludos!

P.D. ¿podrias subir el ejemplo de capturar la cara?  ;D
Title: Re: Módulo de visión por computador
Post by: grisendo on November 28, 2009, 10:40:13 PM
Esperad, no me os estreseis!!

Hay tanto mensaje nuevo que me pierdo!

A ver, lo de la detección facial esta muy mal hecho, ahora estoy de viaje y no miro casi internet,
pero en cuento vuelva intentaré meterle algo de caña. Y... no sé quién ha preguntado lo de usar
la captura de mi cara, pero mi careto tiene copyright. Aún así podría ceder la imágen a cambio
de... digamos  ::) unos cuantos litros de birra.
Title: Re: Módulo de visión por computador
Post by: FreeYourMind on November 30, 2009, 09:34:21 AM
Grisendo, he aprovechado el parón del curro para empezar a mirar tu código.

Por cierto, este PC no tiene webcam y peta por eso, tienes que tener esto en cuenta en tu proxima versión y no usar la WebCam si no existe, para que no pete.

Este fin de semana, publico mi actual juego y ya me pongo en parte con el intento de creación de un modulo para Bennu, como novedad os cuento que va ser nada más y nada menos que un modulo de OPEN GL, o sea, mi intento va ser poder cargar un modelo 3ds (3d studio) y ponerlo en pantalla. Si logro esto, ya conseguiré mucho más, tiempo al tiempo :)
Ya se que hay más personas que estan haciendo esto, pero este va ser mi intento :)
Title: Re: Módulo de visión por computador
Post by: FreeYourMind on November 30, 2009, 10:36:23 AM
Acabo de compilar tu dll sin problemas :) Que ganas tengo de ponerme con mi dll :)
Saludos.
Title: Re: Módulo de visión por computador
Post by: Windgate on November 30, 2009, 01:16:59 PM
Con Bennu 3D ya puede cargarse un modelo 3ds y ponerlo en pantalla, aunque pierdes las funcionalidades 2D al tener que usar el M8E_RENDER a cada FRAME... Splinter dijo que la ventaja de poder usar OpenGL sería de cara al dibujado 2D, el dibujado 3D ya tiene incorporado render con OpenGL, Direct3D y alguno más.
Title: Re: Módulo de visión por computador
Post by: FreeYourMind on November 30, 2009, 02:55:33 PM
Si lo se. Es que Bennu 3D es más una adaptación de un motor 3D, mientras que con esto el objetivo es tener todas las funciones OpenGL de forma simplificada integrado en Bennu, y con el ya podrias crear tu proprio engine y no depender de terceros. Vamos, a mi y según me comento Splinter, esto interesa a más de uno, y como parte del trabajo ya lo tengo echo seria cuestion de adaptarlo a un modulo utilizable con Bennu. Por otro lado no deja de ser más que un experimento, ya que quiero crear un modulo para Bennu y algo el modulo tendrá que hacer, menos cozinar claro  ;D
Title: Re: Módulo de visión por computador
Post by: grisendo on December 04, 2009, 04:11:26 PM
A ver, informe!

Ya he subido una versión nueva (donde siempre) que en vez de buscar todo el rato la cara hace tracking.
Si veis que no os hace mucho caso es porque ha pillado otra cosa como cara, podéis pulsar ENTER
para que vuelva a intentar coger vuestra cara (a mí no me ha pasado, pero ahí está por si acaso...).
Le he añadido también un par de funciones para obtener el tamaño de la camara (y poder adaptar
el juego al tamaño de cada webcam).

Lo que decían algunos de que tenga en cuenta errores, ya estaba hecho, por ejemplo en
[code language="bennu"]camara=openCamera(0);[/code]
si no se podía abrir devolvía -1 (no sé si es el valor habitual de Bennu para este tipo de errores)
así que lo de control de ese error habría que ponerlo en el PRG.

Ahora mismo acabo de intentar ponerme a hacer la conversión de imágenes de OpenCV a imágenes de Bennu
pero justo acaba de joderse Windows (y no he conseguido compilar en Linux de 64 bits), no paran de
salirme pantallazos azules!! He mirado un poco por encima y no encuentro por ninguna parte el tipo de dato MAP!!!

Lo que quiero es algo así:

[code language="c"]static int opencv2bennu(INSTANCE *my, int *params){
    IplImage *imagenOpenCV = (IplImage *)malloc(sizeof(IplImage));
    IMAGEN_DE_BENNU imagenBennu = NUEVA_IMAGEN_BENNU(ancho, alto, canales);
    for(fila=0;fila<filas;fila++){
        for(columna=0;columna<columnas;columna++){
            for(canal=0;canal<canales;canal++){
                color = getPixelOpenCV(imagenCV, fila, columna, canal);
                SET_PIXEL_BENNU(imagenBennu, fila, columna, canal, color);
            }
        }
    }
    return((int)imagenBennu);
}[/code]

Para luego usarlo en bennu dentro de un proceso así:

[code language="bennu"]imagen=getFrame(camara);
graph=opencv2bennu(imagen);
[/code]

Pero claro, necesito saber:
Cuál es el tipo de dato que yo he llamado en el ejemplo IMAGEN_DE_BENNU
Cuál es la función que he llamado NUEVA_IMAGEN_BENNU
Cuál es la función que he llamado SET_PIXEL_BENNU
También, cuál sería la equivalente para la conversión inversa (GET_PIXEL_BENNU).

Y con eso y un bizcocho se podría publicar una versión 0.1 :D
Title: Re: Módulo de visión por computador
Post by: FreeYourMind on December 04, 2009, 04:39:33 PM
Grácias de nuevo.
Si puedes seria mejor separar las versiones con numero y fichero distintos.
El que me enviaste a que versión se corresponde ? Lo compile pero no lo probe.
Saludos.
Title: Re: Módulo de visión por computador
Post by: Windgate on December 04, 2009, 06:22:39 PM
Grisendo, eso es algo que tienen que comentarle a los gurús de Bennu, quizás si les mandas un privado a DCelso o Splinter y les pasas el link de tu último comentario te echen un cable, no debería ser demasiado difícil, hay otras funciones que retornan un nuevo map.
Title: Re: Módulo de visión por computador
Post by: josebita on December 05, 2009, 06:11:49 PM
Siento no haber contestado antes, pensaba que alguien más contestaría. :)

Quote from: grisendo on December 04, 2009, 04:11:26 PM
[...]
Pero claro, necesito saber:
Cuál es el tipo de dato que yo he llamado en el ejemplo IMAGEN_DE_BENNU
Cuál es la función que he llamado NUEVA_IMAGEN_BENNU
Cuál es la función que he llamado SET_PIXEL_BENNU
También, cuál sería la equivalente para la conversión inversa (GET_PIXEL_BENNU).

Y con eso y un bizcocho se podría publicar una versión 0.1 :D

Tipo de dato: GRAPH * mapa;
NUEVA_IMAGEN_BENNU: GRAPH * mapa = bitmap_new_syslib(ancho, alto, profundidad); y devuelves mapa->code (que es un entero).
GET_PIXEL_BENNU: gr_get_pixel(mapa, x, y);
SET_PIXEL_BENNU: gr_put_pixel(mapa, x, y, color);

Puede que necesites también:
GRAPH * mapa = bitmap_get(int fileid, int mapid);
Donde generalmente fileid será 0; Ésta función te da acceso al mapa a partir del código numérico que lo representa.


Creo que es todo. Espero ansioso esa 0.1 :)
Title: Re: Módulo de visión por computador
Post by: FreeYourMind on December 05, 2009, 06:18:11 PM
josebita tienes un MP!
Title: Re: Módulo de visión por computador
Post by: Prg on December 06, 2009, 01:29:59 AM
el ejemplo est'a genial. de vez en cuando se movia raro, pero presionando enter se reacomodaba :)
karma++
y felicidades
Title: Re: Módulo de visión por computador
Post by: grisendo on December 09, 2009, 11:34:05 PM
bitmap_new_sys lo pilla pero...

soy muy corto! No sé qué tengo que incluir para gr_put_pixel y gr_get_pixel!!!
y he visto que las funciones esas están en g_pixel.c y g_pixel.h pero empieza
a tirar dependencias y duplicados como un cerdo y no consigo arreglarlo :(
Title: Re: Módulo de visión por computador
Post by: josebita on December 10, 2009, 12:29:37 AM
Intenta mirarte el código fuente de los módulos que dan esa funcionalidad directamente a Bennu. Yo lo miré de ahí.
También puedes mirar sus dependencias en los Makefile.am

Y también puedes poner el mensaje de error y te intentamos echar una mano...
Title: Re: Módulo de visión por computador
Post by: grisendo on December 15, 2009, 03:42:28 PM
Está bien, me rindo. Este es mi código:

[code language="c"]
#include "bgddl.h"
#include "highgui.h"
#include "libgrbase.h"
#include "libblit.h"
#include "SDL_image.h"
#include "g_pixel.h"

static int toGraph(INSTANCE *my, int *params){
    GRAPH *graph;
    IplImage* image;
    image=(IplImage*)params[0];
    graph=bitmap_new_syslib(image->width,image->height,image->nChannels);
    gr_put_pixel(graph,0,0,255);
    return((int)(graph->code));
}
[/code]

En el linker tengo libbgdrtm.dll y libgrbase.dll, y el error que tira es:

.\Image.o:Image.c:(.text+0xe75)    undefined reference to '_gr_put_pixel'
.\main.o:main.c:(.text+0x32d5)      undefined reference to '_gr_put_pixel'
                                                === Build finished: 2 errors, 0 warnings ===


Pero veo claramente que gr_put_pixel está ahí... en g_pixel.h, que lo incluyo.
Probando a incluir g_pixel.c en su lugar (he probado de todo...) me salta esto:

Info: resolving _sys_pixel_format by linking to __imp__sys_pixel_format

Me tira ese warning, y ningún error, pero no me genera nada (como si diese error).
¿Me sobra/falta algun include o alguna librería de linkar?
Me decanto a que el error es de linkar, no de compilar... pero no sé 100% seguro.
Title: Re: Módulo de visión por computador
Post by: grisendo on December 15, 2009, 04:31:35 PM
Me auto-respondo, me faltaba linkar el liblit.dll xDDD qué tontería...

Ahora bien (otra vez necesito la opinión de los expertos)...

En C:
¿Qué valor le pongo al color pixel a partir de las componentes RGB? ¿Hay alguna macro?
He probado varios colores y me sale todo negro

En Bennu:
¿Qué "file" ha de usarse? Es decir, cuál es el file del nuevo bitmap que se crea
Title: Re: Módulo de visión por computador
Post by: josebita on December 15, 2009, 06:45:48 PM
Primera pregunta:
Ahora mismo no sé qué contestar, tendría que mirar el código...

Segunda pregunta:
file para un bitmap creado en memoria (o a partir de cualquier cosa que no sea un fpg) es 0.
Title: Re: Módulo de visión por computador
Post by: grisendo on December 15, 2009, 10:22:52 PM
Gracias!

Me vuelvo a auto-responder (no sé qué tiene este foro hoy, que es poner una pregunta y venirme a la cabeza cómo se hace).
El color es un entero (4 bytes): Primer byte componente azul, segundo componente verde, tercero el rojo y cuarto la opacidad xDD
Eso para colores de 32bits, para el resto ya me tocará investigar...
Title: Re: Módulo de visión por computador
Post by: josebita on December 15, 2009, 11:02:04 PM
¡Eso es!.

Mira a ver si este código te vale de algo. No es lo que quieres, pero te puede dar una buena idea de cómo funcionan los colores exactamente.

[code language="c"]void gr_get_rgb( int color, int *r, int *g, int *b )
{
    /* 8 bits mode, work with system palette */

    if ( sys_pixel_format->depth < 16 )
    {
        rgb_component * rgb ;

        if ( !sys_pixel_format->palette )
            rgb = ( rgb_component * ) default_palette;
        else
            rgb = sys_pixel_format->palette->rgb ;

        color &= 0xFF ;
        ( *r ) = rgb[ color ].r ;
        ( *g ) = rgb[ color ].g ;
        ( *b ) = rgb[ color ].b ;

        return ;
    }

    ( *r ) = (( color & sys_pixel_format->Rmask ) >> sys_pixel_format->Rshift ) << sys_pixel_format->Rloss;
    ( *g ) = (( color & sys_pixel_format->Gmask ) >> sys_pixel_format->Gshift ) << sys_pixel_format->Gloss;
    ( *b ) = (( color & sys_pixel_format->Bmask ) >> sys_pixel_format->Bshift ) << sys_pixel_format->Bloss;
}[/code]
Title: Re: Módulo de visión por computador
Post by: Windgate on December 16, 2009, 12:17:42 AM
Para 16 bits son 5 para rojo, 6 para verde y 5 para azul... Lo que no sé decirte es si los rojos son los más significativos o los menos... Yo diría que el rojo son los más significativos y en 32 bits yo diría que los más significativos son el alpha, pero tal como lo explica Grisendo (El 4º la opacidad) no sé si me da la razón o me la quita JoaZ :P

¿Por qué 6 bits para el verde? Pues por motivos históricos y políticos que tienen que ver con la belle epoque de los nazis y los judíos... Es broma, le dieron más precisión al verde porque nuestras características genéticas humanas están más adaptadas a entornos rodeados de vegetación, de allá cuando éramos monos (Incluso ratas), al menos eso es lo que dicen los libros ::)
Title: Re: Módulo de visión por computador
Post by: josebita on December 16, 2009, 12:29:29 AM
¡Qué bien explicao!
Title: Re: Módulo de visión por computador
Post by: SplinterGU on December 16, 2009, 01:44:57 AM
no hagas nada de eso, para los rgb tenes que usar las funciones que estan en el fuente g_pal.c en el modulo libgrbase.
Title: Re: Módulo de visión por computador
Post by: Windgate on December 16, 2009, 07:10:03 AM
Hola de vuelta Splinter, que placercillo verte de nuevo xD

Me temo que Grisendo y yo somos de los que todavía no usamos paletas, ¿Lo dices para darle validez "universal" al módulo, no?, para que funcione tanto para los que las usan como para los que no :P
Title: Re: Módulo de visión por computador
Post by: grisendo on December 16, 2009, 09:50:16 AM
Puff... paletas... Recuerdo allá por los tiempos de DIV2 que había un juego de Dragon Ball que,
o bien me cargué yo mismo la paleta de algún FPG o bien cada FPG usaba la que le daba la gana,
porque no había forma de que todos los personajes estuviesen bien pintados a la vez.

Bueno, intentaré darle validez "universal" cuando consiga primero darle validez en 32-bits :P
Title: Re: Módulo de visión por computador
Post by: Windgate on December 16, 2009, 10:47:00 AM
Yo con DIV lo mismo, les tenía pánico a las paletas y por eso en Bennu sólo las he tocado a partir de un ejemplillo que cambia el color de las ropas de un bicho, por creerme que funcionan bien, pero vamos, las instrucciones que hay que usar son un coñazo que te khagas.
Title: Re: Módulo de visión por computador
Post by: grisendo on December 16, 2009, 12:46:37 PM
Quote from: Windgate on December 16, 2009, 12:17:42 AM
Para 16 bits son 5 para rojo, 6 para verde y 5 para azul... Lo que no sé decirte es si los rojos son los más significativos o los menos... Yo diría que el rojo son los más significativos y en 32 bits yo diría que los más significativos son el alpha, pero tal como lo explica Grisendo (El 4º la opacidad) no sé si me da la razón o me la quita JoaZ :P

¿Por qué 6 bits para el verde? Pues por motivos históricos y políticos que tienen que ver con la belle epoque de los nazis y los judíos... Es broma, le dieron más precisión al verde porque nuestras características genéticas humanas están más adaptadas a entornos rodeados de vegetación, de allá cuando éramos monos (Incluso ratas), al menos eso es lo que dicen los libros ::)

Me equivoqué con los colores. Tienes razón tú, de más a menos significativo es Alpha, Rojo, Verde y Azul
Title: Re: Módulo de visión por computador
Post by: SplinterGU on December 16, 2009, 02:38:58 PM
gracias... pero no, no lo digo por las paletas... lo digo porque ahi estan las funciones de conversion RGB y RGBA, segun el formato del mapa y segun el formato del modo de video... las tenes todas...
Title: Re: Módulo de visión por computador
Post by: grisendo on December 22, 2009, 12:25:20 AM
Aunque parezca mentira, sigo con la librería de 3d, solo que
estoy muy liado y no tengo mucho tiempo... esperemos que
la Navidad me deje respirar un poco más...

Primero de todo, las funciones es mejor hacerlas así:

[code language="c"]funcion(entrada,entrada2,salida)[/code]

Que así:

[code language="c"]salida=funcion(entrada,entrada2)[/code]

No? Porque de la segunda forma no es necesaria la variable de
salida, y al hacer llamadas "anidadas" funcion(funcion(funcion(entrada)))
se crearían zonas de memoria que luego no se puede acceder... y me imagino
que Bennu no tiene garbage collector. Al obligar a meter la salida como un
parametro más, estamos obligando a que siempre cada elemento esté asociado
a una variable y luego podamos reutilizarlas o borrarlas... no? Si me equivoco
y no hace falta me decís, es que es para reorganizar todas las funciones o no xD

Otra cosa, tengo problemas con una funcion, necesito meterle un parametro cadena, pero me peta en
tiempo de ejecución... lo he copiao tal cual de un ejemplo pero a mi no me va:

[code language="bennu"]
static int setPattern(INSTANCE *my, int *params){
    TrackSystem *track=(TrackSystem *)params[0];
    char *cadena=(char *)string_get(params[1]);
    track->patron=(CvHaarClassifierCascade*)cvLoad(cadena,0,0,0);
    string_discard(params[1]);
   return(1);
}
[/code]

Finalmente, he subido un RAR actualizado de dos "juegos" con la librería experimental.
El primero el de siempre de las monedas, pero ahora se ve la imagen de la webcam
como fondo del juego. El segundo (esta muy chapucero) un intento de integración
en un ejemplo sencillo del motor 3D (no tengo ni guarra de usar el 3D, a ver si Windgate
me hace algo en condiciones, yo he tocao la primera variable que he pillao y he tenido
suerte de que el bicho giraba xDD). El juego es un truño, solo puedes girar la cabeza
y ya está (y ENTER para resetear si se pierde, como siempre), sólo quería probarlo con
3D.

La direción de siempre: http://www.grisendo.com/subidas/opencv.rar

Salud!
Title: Re: Módulo de visión por computador
Post by: Drumpi on December 22, 2009, 01:54:10 AM
Hombre, hasta donde se, el devolver un valor no gasta memoria salvo en la función que guarda el dato (si es que guarda el dato en una variable). El usar paso por referencia (siempre lo confudo con "paso por valor") también requiere de dicha variable, pero es una menos en la función llamada... peeeero, ya estamos trabajando con punteros, y eso es algo con lo que hay que tener mucho cuidado.
Si estamos hablando de C, no hay problema, porque ahi eres tu el que controla el asunto y lo puedes hacer como venga en gana. El problema es que hablemos de código Bennu, porque al usuario novato no se le puede pedir que haga según qué cosas (una función como GET_RGB es algo complejo para el que no ha visto un IF en su vida).

Respecto a las cadenas, ni idea, eso estaba prohibidísimo en clase de C (usad listas enlazadas, decía). ¿Puede ser que te falte la declaración de tipos (una cadena de tipo IIIEI...)?

Por cierto, te has ganado un karma por tu MP, la única alegría de todo el día ;)
Title: Re: Módulo de visión por computador
Post by: grisendo on December 22, 2009, 09:10:07 AM
Ya que esto del conocimiento libre es compartir, lo del MP
es un Proyecto Fin de Carrera de reconocimiento de voz.
Lo pongo aquí, para el que le sirva de algo:

http://www.grisendo.com/subidas/memoriavoz.pdf

Por cierto, se me ha olvidado decirte, la implementación
se la he pedido pero no me ha contestado aún, en cuanto
me la mande (si aún la tiene) también la subo.
Title: Re: Módulo de visión por computador
Post by: Drumpi on December 23, 2009, 12:56:03 AM
Muchas gracias, eso tampoco hacía mucha falta, pero mira, si lo tiene por ahi...
Pero me comentas que está hecho en Matlab (adoremos a la herramienta para dominar al mundo), y es un lenguaje bastante... raro (iba a decir feo, pero no quiero faltar a los feos ;D). Bueno, es normal, es un lenguaje matemático con aspiraciones de código, jejeje.

Pero bueno, C es mi herramienta, y ya veremos si no termina siendo Bennu mi osciloscopio.
Title: Re: Módulo de visión por computador
Post by: l1nk3rn3l on January 16, 2010, 03:24:39 PM
comparte los fuentes para subirlos al bennupack..(fuentes dll )

Gracias...
Title: Re: Módulo de visión por computador
Post by: grisendo on January 16, 2010, 08:05:18 PM
¿Seguro? Tras las últimas modificaciones, la cosa está inestable inestable... tanto que peta a la más mínima sin sentido :D
sigo trabajando en ello (con poca frecuencia porque ando muy ocupado últimamente...)

La última versión medio estable la subí aquí:
http://grisendo.com/subidas/codigo.rar

Pero desde aquella hasta ahora he ido cambiando todo lo que son funciones que devuelven cosas por procedimientos
con parámetros de salida... así que si se publica ya, la compatibilidad de futuras versiones con esa será nula... :(
Title: Re: Módulo de visión por computador
Post by: SplinterGU on January 17, 2010, 05:34:20 PM
una pregunta, y modulo de reconocimiento facial? que onda con eso?
Title: Re: Módulo de visión por computador
Post by: Windgate on January 18, 2010, 12:34:18 AM
Splinter, el módulo facial básicamente permite utilizar tu cara frente a la webcam como controlador del juego :P además de otras posibilidades interesantes. Tuve problemas con mi otro portátil y aún no lo pude probar, descargo en el nuevo a ver si me va todo ok y te cuento Grisendo.
Title: Re: Módulo de visión por computador
Post by: SplinterGU on January 18, 2010, 03:40:00 AM
si, gracias, ya se lo que hace esto... pero lo que quiero saber es si tiene algun prototipo de reconocimiento facial o conocimientos y/o quizas piensa hacer algo al respecto...
Title: Re: Módulo de visión por computador
Post by: grisendo on January 19, 2010, 03:57:02 PM
Toy en ello :P Lo de la detección facial no sólo sirve como controlador,
se puede utilizar para más cosas, ya que se obtiene la x e y iniciales
así como el ancho y alto, con lo cual puede usarse también por ejemplo
para obtener la textura de tu cara y luego poder ponérsela a un
personaje 3D (si hay algún módulo que permite cargar texturas, que
yo nunca he tocado el 3D) o realizar otro tipo de tareas (detectar
emociones...).

La cosa es que el módulo de visión por computador incluye:
    - Captura de imágenes desde webcam
    - Detección de objetos
        - Un caso particular es la detección de caras, pero se puede entrenar
           cualquier objeto entrenado y guardado en un XML. Aunque sólo he
           conseguido encontrar XML de ojos, caras, narices, cuerpos... existe
           una herramienta para crearlos.
    - Operaciones avanzadas con imágenes
        - Diferencia de imágenes (para detección de movimiento)
        - Umbralizado, suavizado, expansión...
    - Más cosas relacionadas, según sigan surgiendo...

Creo que no me he enterado bien de la pregunta, ¿Era esa la duda?
Title: Re: Módulo de visión por computador
Post by: SplinterGU on January 19, 2010, 05:19:52 PM
eso va fantastico... la pregunta va a reconocer personas... como el feature de google... que te reconoce a tus amigos en tus fotos y te los taguea automaticamente...

la idea es poder reconocer personas...
Title: Re: Módulo de visión por computador
Post by: Drumpi on January 19, 2010, 05:27:55 PM
Como poder, claro que podría ¿no ves CSI? se marcan unos puntos en la cara (posición y tamaño de los ojos, nariz, boca, pómulos y contorno), se compara con una base de datos y te suelta unos cuantos resultados... lo que pasa es que en las pelis (que casualidad) siempre sale una única cara :D

Y si reconoce cuerpos, se puede jugar estilo eyetoy. Si reconoce manos se pueden crear IDEs que se manejen a lo "Minority Report". Y si reconoce otras figuras, se puede hacer lo que en esos videos que se ven personajes 3D en la vida real (lo que se conoce como "realidad aumentada").
¿Os imaginais que funcionase en WIZ y pudiéramos ponerle una webcam? (babea).
Juer, se me ocurre colgar varios papeles de esos, con el cuadradito dibujado, en el cuarto, y hacer un shooter en primera persona.
Title: Re: Módulo de visión por computador
Post by: SplinterGU on January 19, 2010, 05:46:27 PM
la idea es que me si me siento yo, el soft sepa que soy yo y si se sientan 1000 personas diferentes, que identifique a cada 1 de ellas... ya hay soft de ese estilo y nada de programas de ciencia ficcion... hay varios, google tiene uno... la idea es que si hay algo hecho por la gente de la comunidad me agrada mas...
Title: Re: Módulo de visión por computador
Post by: grisendo on January 19, 2010, 06:49:34 PM
Sí, se puede.

----------------------------------------------
DANGER!!! Rollo patatero a continuación:
----------------------------------------------

Lo que pasa que ahora mismo no hay forma inmediata de hacerlo como sí que la hay para detectar la posición. Pero OpenCV proporciona funciones a bajo nivel que se pueden exportar a Bennu, y desde Bennu unir esas funciones de bajo nivel en un algoritmo para reconocer caras. O exportar a Bennu directamente un algoritmo de detección de más alto nivel para "tontos" (más bien para usuarios normales no-frikis jeje). A fín de cuentas la función de detectar la posición está hecha con funciones de bajo nivel de OpenCV y exportada a Bennu para gente que no tiene ni idea del tema. Y si se pudo hacer esa, también se puede hacer la de reconocimiento ("me juego lo déo shico de la mano de que" hay algoritmos de reconocimiento implementados íntegramente con funciones de OpenCV).

Pero como hay miles de formas de hacerlo, no se pueden hacer todas en alto nivel para Bennu, por eso habría que elegir alguna, la que más se utilice en todos los campos por su gran tasa de aciertos y velocidad (como se ha hecho para la detección de la posición de la cara). El reconocimiento facial es un tema que no me he metido mucho, pero sólo hace falta ponerse a leer y a investigar.

Se puede empezar exportando las funciones básicas de OpenCV a Bennu (que es lo que intento hacer). Luego en código Bennu, combinarlas para ir viendo resultados intermedios, y cuando se tenga algún algoritmo interesante, meterlas como funciones de alto nivel en el módulo.

Ejemplo:
Funciones básicas de Bennu:
1. Restar dos imágenes
2. Umbralizar una imagen
3. Tomar una foto de la webcam
4. Mezclar dos imágenes

Ejemplo código en Bennu hecho por un "investigador":
(3) tomar_imagen(foto_sin_usuario);
(3) tomar_imagen(foto_con_usuario);
(1) usuario_y_ruido=restar(foto_con_usuario, foto_sin_usuario);
(2) usuario=umbralizar(usuario_y_ruido, umbral);
(4) mezclar(foto_fondo_falso, usuario);

Entonces como vemos que funciona bien y puede ser muy útil,
lo incluimos en el módulo como una función para "tontos":
5. Poner un fondo falso

Ejemplo código en Bennu hecho por un usuario normal:
(3) tomar_imagen(foto_sin_usuario);
(3) tomar_imagen(foto_con_usuario);
(5) poner_fondo_falso(foto_sin_usuario, fondo_falso, foto_con_usuario);
Title: Re: Módulo de visión por computador
Post by: SplinterGU on January 19, 2010, 08:32:59 PM
a esto me surge una pregunta (tambien podria googlear), OpenCV es una libreria tuya o es una libreria opensource de otro/s?
Title: Re: Módulo de visión por computador
Post by: grisendo on January 19, 2010, 09:43:26 PM
Es una librería de otros, de hecho la crearon en Intel, pero no sé si todavía la mantienen ellos o una comunidad propia. Tiene licencia BSD, así que todo el mundo prácticamente se la fo*** como quiere.
Title: Re: Módulo de visión por computador
Post by: SplinterGU on January 19, 2010, 11:40:16 PM
buenisimo... gracias...
Title: Re: Módulo de visión por computador
Post by: Drumpi on January 20, 2010, 02:14:37 AM
Quote from: SplinterGU on January 19, 2010, 05:46:27 PM
la idea es que me si me siento yo, el soft sepa que soy yo y si se sientan 1000 personas diferentes, que identifique a cada 1 de ellas... ya hay soft de ese estilo y nada de programas de ciencia ficcion... hay varios, google tiene uno... la idea es que si hay algo hecho por la gente de la comunidad me agrada mas...

Ya se que existen programas, sólo puse el ejemplo peliculero :D
En mi movil hay un programa que, tras sacar la foto, reconoce los rasgos de la cara (ojos nariz, boca y contorno) y los usa para deformar la imagen y conseguir "efectos" como hacer que sonria, que esté triste, que parezca un alien, pnerle mucha frente... Da igual la posición de la cara en la foto.

Y como poder reconocerte, claro que puede, sólo que necesitarías crear primero la base de datos de esas 1000 personas que quieres que reconozca (el proyecto "natal" tambien tiene que escanear las caras de los usuarios para que te reconozca ^^U).

Si se establecen correctamente los puntos característicos, el reconocimiento facial no debería ser un "problema", algoritmos de eso debe haber cientos. Quizás lo más gordo sea buscar en la base de datos: imagina a gugle buscando entre todas las fotos que tiene archivadas, pero para eso tienen su mega-código de búsqueda super optimizado y sus tropecientas máquinas.
Para nosotros cualquiera vale. Creo que con que busque la posición de ojos, nariz, boca, cabeza y tamaño del contorno (la forma ya es más compleja) creo que bastaría para distinguir a las 2 o 3 personas que lo van a usar por cada PC, estén a la distancia que estén.
Title: Re: Módulo de visión por computador
Post by: SplinterGU on January 20, 2010, 04:11:53 AM
yo estoy necesitando reconocimiento facial y otros reconocimientos para unos proyectos propios fuera de bennu...
Title: Re: Módulo de visión por computador
Post by: juanpe on January 23, 2010, 12:56:59 AM
Grisendo te felicito por tu trabajo, parece increible lo que se está consiguiendo con bennu. También el trabajo de drumpi con el reconocimiento de voz me parece muy interesante y estaré atento a ver si lo consigue.
A medio plazo me podría resultar interesante utilizar todo esto en lo que estáis trabajando ambos, pues estoy diseñando un test para ordenador para realizar rehabilitación visual, para tratar estrabismos, ambliopía... En el COI ( CENTRO DE OPTOMETRIA INTERNACIONAL) están colaborando con SONY utilizando la psp junto con la cámara eye toy para hacer rehabilitación visual. Cuando dices que las aplicaciones podrían ser similares a las de la webcam de ps2 creo que te refieres al eye toy, ¿ no?.
Yo por mi parte para hacer mi programa en bennu estoy contando con la ayuda del COI y la cosa va lenta porque lo hago en ratos libres pero tiene buena pinta.
Si quereis echar un vistazo podeis entrar en: http://es.playstation.com/psp/news/articles/detail/item109610/Recuperar-visión-con-PSP/
Title: Re: Módulo de visión por computador
Post by: SplinterGU on January 23, 2010, 02:20:27 AM
muy bueno eso, podes contar como trabaja? en que se basa la rehab?
Title: Re: Módulo de visión por computador
Post by: Rein (K´)ah Al-Ghul on January 23, 2010, 05:41:38 PM
Quote from: juanpe on January 23, 2010, 12:56:59 AM
Grisendo te felicito por tu trabajo, parece increible lo que se está consiguiendo con bennu. También el trabajo de drumpi con el reconocimiento de voz me parece muy interesante y estaré atento a ver si lo consigue.
A medio plazo me podría resultar interesante utilizar todo esto en lo que estáis trabajando ambos, pues estoy diseñando un test para ordenador para realizar rehabilitación visual, para tratar estrabismos, ambliopía... En el COI ( CENTRO DE OPTOMETRIA INTERNACIONAL) están colaborando con SONY utilizando la psp junto con la cámara eye toy para hacer rehabilitación visual. Cuando dices que las aplicaciones podrían ser similares a las de la webcam de ps2 creo que te refieres al eye toy, ¿ no?.
Yo por mi parte para hacer mi programa en bennu estoy contando con la ayuda del COI y la cosa va lenta porque lo hago en ratos libres pero tiene buena pinta.
Si quereis echar un vistazo podeis entrar en: http://es.playstation.com/psp/news/articles/detail/item109610/Recuperar-visión-con-PSP/

es lo q dije en el hilo de video juegos accesibles¬¬
Es bueno q se avance hacia este lado, aprovechando bennu para otras cosas que no sean videojuegos...
Title: Re: Módulo de visión por computador
Post by: Prg on January 24, 2010, 04:20:53 AM
Quote from: grisendo on January 19, 2010, 03:57:02 PM
Toy en ello :P Lo de la detección facial no sólo sirve como controlador,
se puede utilizar para más cosas, ya que se obtiene la x e y iniciales
así como el ancho y alto, con lo cual puede usarse también por ejemplo
para obtener la textura de tu cara y luego poder ponérsela a un
personaje 3D (si hay algún módulo que permite cargar texturas, que
yo nunca he tocado el 3D) o realizar otro tipo de tareas (detectar
emociones...).

La cosa es que el módulo de visión por computador incluye:
    - Captura de imágenes desde webcam
    - Detección de objetos
        - Un caso particular es la detección de caras, pero se puede entrenar
           cualquier objeto entrenado y guardado en un XML. Aunque sólo he
           conseguido encontrar XML de ojos, caras, narices, cuerpos... existe
           una herramienta para crearlos.
    - Operaciones avanzadas con imágenes
        - Diferencia de imágenes (para detección de movimiento)
        - Umbralizado, suavizado, expansión...
    - Más cosas relacionadas, según sigan surgiendo...

Creo que no me he enterado bien de la pregunta, ¿Era esa la duda?


suena genial. y lo de las texturas de 3d en rostro me da mucha emoción... creo que si se podria exportando primero a png y luego cargando y aplicando al modelo.

una de las versiones me había generado problemas cuando había varias fuentes de luz atrás de mi, a la hora de detectar el rostro, a alguien más le paso (me marcaba rostros en cada fuente de luz)? (no se si ya lo había dicho, como que recuerdo que si)...

cuál es la última versión?
Title: Re: Módulo de visión por computador
Post by: Drumpi on January 24, 2010, 04:35:48 AM
Jajaja, tu webcam está más loca que los mandos de mi Wii, que detectan la lámparita del salón y el sol como la barra de sensores ;D (en serio, salí a la puerta a abrir y notaba cómo me vibraba el mando al pasar el cursor sobre los canales).
Title: Re: Módulo de visión por computador
Post by: Prg on January 24, 2010, 05:00:27 PM
  :-\

esto es un ejemplo, pero ya es con una version muy vieja (la primera), en la ultima aparece un  juego, y no se como exportar lo que la camara obtiene...

(captura abajo)
Title: Re: Módulo de visión por computador
Post by: Windgate on January 24, 2010, 08:00:55 PM
Juas, detecta rostros en cualquier lugar :D

Grisendo, si hay cualquier cambio, por mínimo que sea (Recuerda que hace poco salió el Bennupack 1.8), súbenoslo please, a ver si esta vez no tengo problemas de .dlls
Title: Re: Módulo de visión por computador
Post by: Drumpi on January 25, 2010, 01:47:48 AM
Quote from: Prg on January 24, 2010, 05:00:27 PM
  :-\

esto es un ejemplo, pero ya es con una version muy vieja (la primera), en la ultima aparece un  juego, y no se como exportar lo que la camara obtiene...

(captura abajo)

Jajajaja. Tengo curiosidad por ver en donde situaría los ojos la nariz y la boca en esa captura, lo mismo sale el primer PC discípulo de Picasso ;D
Title: Re: Módulo de visión por computador
Post by: grisendo on January 25, 2010, 10:58:12 AM
Vaya la de posts que habéis puesto en poco rato!! Tengo un pequeño problema con la RAM para una función específica (obtener una sub-imagen de una imagen), que no hay forma de liberar memoria de una imagen y hace que ésta crezca y crezca... Aunque las versiones viejas eran mucho peores en cuanto a crecimiento de memoria, y conseguí jugar con ellas rato y rato. En cuanto arregle eso ya habría algo publicable. De todas formas si no podéis esperar a que lo arregle, lo publico y ya está.

Prg: Esa versión es muy muy vieja! En el mismo enlace está la última versión jugable:

http://www.grisendo.com/subidas/opencv.rar

Como ya dije, algoritmos de detección de caras hay miles, este es el más utilizado. Ahora, en la captura que has subido, sólo hay cuadrados verdes (correspondientes a caras) y no hay ningún cuadrado rojo (correspondientes a ojos). Puedes decir "Esto es un truño de detección, yo quiero mejorarlo" pues coges (desde Bennu) la sub-imagen de la cara y detectas en ella los ojos. Si hay, bien, es una cara. Si no hay, no es una cara. Puedes intentar detectar también boca, nariz, que el color se corresponda con color de piel... complicarlo tanto como quieras!! A veces se mejoran los resultados, otras veces se empeoran (tanto en número de aciertos como en velocidad)...
Title: Re: Módulo de visión por computador
Post by: Prg on January 26, 2010, 06:03:00 AM
entiendo :).
esperare la proxima version
un saludo
karma++
Title: Re: Módulo de visión por computador
Post by: Windgate on January 26, 2010, 10:49:45 AM
Por fin he podido probarlo en condiciones, me ha gustado mucho, a ver si un día de estos programo alguna cosita con él :D

Por supuesto si lo hago será en 3D
Title: Re: Módulo de visión por computador
Post by: grisendo on January 26, 2010, 08:41:23 PM
Todavía espero de ti aquella demo 3D que te dije ::) jaja
Pero quién soy yo para exigir, si se me está alargando esto
del módulo demasiao!!! :P No preocuparse, me voy a poner
ya de límite esta semana para publicar el código, que si no,
no hay forma...
Title: Re: Módulo de visión por computador
Post by: Windgate on January 26, 2010, 10:19:42 PM
He visto tu ejemplo 3D, se le va bastante la olla, la verdad es que es complicado manejar bien la cámara fps en Bennu 3D, a ver si saco un rato y le meto mano al asunto, he visto que en 2D funciona sin problema, así que añadiré algún elemento de GUI para que en 3D se vea dónde coño tienes la nariz y así se puedan probar mejor las cosas... Cuento con ello tranki xD
Title: Re: Módulo de visión por computador
Post by: juanpe on January 26, 2010, 11:16:06 PM
  Splinter la rehabilitación visual se basa en que la visión no es solo tener una buena agudeza visual para ver cosas pequeñas, sino que hay que dominar una serie de habilidades. Por ejemplo en algunos casos de  estrabismos se puede enseñar a alinear y utilizar los dos ojos. Con un juego o test para ordenador si p. ej. pones un filtro rojo en el ojo dcho. y otro verde en el izdo. y le pones una prueba en la cual para hacerla bién tenga que alinear los ojos tendrá una gran motivación para superar su problema; sin embargo algunos tests tradicionales son más aburridos y no motivan al paciente.
No conozco el modo exacto en que usan PSP y EYE TOY en la rehabilitación.Tengo intención de ir a Madrid para ver si me lo cuentan, aunque por mi trabajo me es difícil.
Rein (K´)ah Al-Ghul estoy de acuerdo en que bennu tiene mayor potencial que el de los videojuegos y con lo que lo están ampliando cada vez más, y además es sencillo de usar y ahorra trabajo para algunas tareas con respecto a otros lenguajes.
Title: Re: Módulo de visión por computador
Post by: grisendo on January 28, 2010, 02:35:37 PM
Vaya qué interesante, yo tengo un hermano pequeño de 9 años que tiene un poco de estrabismo y tiene que hacer ejercicios raros, como estar quieto unos minutos mirando a un punto en una especie de cartulina con colores de tablero de ajedrez. Sé que más de la mitad de las veces no los hace porque son un aburrimiento (¿Mi hermano sentado, quieto más de un minuto mirando algo?), y tienen que estar mis padres detrás persiguiéndolo para que los haga. Estoy seguro de que si sacasen algún videojuego entretenido que tuviese el mismo efecto, lo haría sin rechistar.
Title: Re: Módulo de visión por computador
Post by: Drumpi on January 29, 2010, 04:00:35 AM
Grisendo ¿has probado a ver si funciona el "training for your eyes" para NDS? dicen que en casos raros hace algo, lo mismo viene ese ejercicio y otros interesantes.
Title: Re: Módulo de visión por computador
Post by: grisendo on January 29, 2010, 07:26:04 PM
No lo he probado, pero lo haré. Gracias! Karma++ para los dos :)

Por cierto, cuando mande el código tengo que poner algún tipo
de cabeceras, comentarios, etc... especiales?
Title: Re: Módulo de visión por computador
Post by: josebita on January 29, 2010, 10:13:32 PM
¿qué licencia quieres ponerle?
Title: Re: Módulo de visión por computador
Post by: grisendo on January 29, 2010, 10:24:45 PM
GPL para que sea 100% compatible con BennuGD. Lo que pasa que como OpenCV tiene licencia BSD pues no sé muy bien...

En cuanto ponga lo que haga falta de licencias, subo y aviso :D

Title: Re: Módulo de visión por computador
Post by: josebita on January 29, 2010, 11:59:58 PM
Para que sea compatible con Bennu, tb puedes usar lgpl.

Lo que hace falta es añadir unas líneas al ppio. de cada fichero y un fichero llamado COPYING con la licencia en particular que quieras.
Si quieres usar la misma licencia que Bennu, debes añadir a cada fichero el siguiente texto al principio:
/*
*  Copyright (c) 2010 TUNOMBRE
*
*  This file is part of Bennu - Game Development
*
*  Bennu is free software; you can redistribute it and/or modify
*  it under the terms of the GNU General Public License as published by
*  the Free Software Foundation; either version 2 of the License, or
*  (at your option) any later version.
*
*  Bennu is distributed in the hope that it will be useful,
*  but WITHOUT ANY WARRANTY; without even the implied warranty of
*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
*  GNU General Public License for more details.
*
*  You should have received a copy of the GNU General Public License
*  along with this program; if not, write to the Free Software
*  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
*
*/

Y asegúrate de cambiar donde diga Bennu o TUNOMBRE por lo que sea en realidad.
El fichero COPYING está en:
http://bennugd.svn.sourceforge.net/viewvc/bennugd/core/COPYING?revision=1&view=markup

Si quisieras usar otra licencia, cambia el texto y el contenido del fichero, pero la idea es la misma.
Title: Re: Módulo de visión por computador
Post by: grisendo on January 30, 2010, 01:41:58 AM
Karmilla por la lección magistral y... a publicar la versión 0.0.1!

Directorio raíz:
http://www.grisendo.com/proyectos/bennuCV/

Módulo (y posibles dependencias):
http://www.grisendo.com/proyectos/bennuCV/bennuCV-0.0.1/bin/

Código fuente (y proyectos para Code::Blocks):
http://www.grisendo.com/proyectos/bennuCV/bennuCV-0.0.1/src/

Juegos de demostración 2D y 3D:
http://www.grisendo.com/proyectos/bennuCV/demos/

Explicación de las funciones:
http://www.grisendo.com/proyectos/bennuCV/funciones.txt

Algunos objetos para tracking:
http://www.grisendo.com/proyectos/bennuCV/haarcascades/


Nota: Teóricamente también está para Linux... digo teóricamente porque
aunque he compilado y generado el .so, no he podido probarlo. Al compilar
el código bennu, me dice que no lo encuentra, ni en la carpeta de modules,
ni en la actual, he leído mil posts y no he arreglado, ni siquiera la encuentra
moddesc...
Title: Re: Módulo de visión por computador
Post by: Windgate on January 30, 2010, 04:14:34 PM
K++ Grisendo, te debo un proyecto basado en tu módulo, será sencillo pero curioso, basado en disparar enemigos y esquivar con la cabeza. Molaría MUCHO poder traquear una mano apuntando con el dedo en plan "pistola", sería un bombazo manejar el punto de mira con eso :P
Title: Re: Módulo de visión por computador
Post by: FreeYourMind on January 30, 2010, 04:25:43 PM
Y yo le debo poder haber creado mi propio modulo Open 3D, aunque este en pañales :)
Title: Re: Módulo de visión por computador
Post by: josebita on January 30, 2010, 08:20:34 PM
Te falta de linkar contra un montón de librerías en linux. En cuanto tenga la lista exacta, te la pongo por aquí.
Title: Re: Módulo de visión por computador
Post by: josebita on January 30, 2010, 08:41:33 PM
Venga, he usado el opencv del siguiente PPA:
https://launchpad.net/~gijzelaar/+archive/opencv2-karmic
porque en Ubuntu viene opencv1 y parece que has usado la versión 2 (si intento usar la versión 1, me da algún error de compilación).
Además, lo he compilado contra la versión de Bennu de mi PPA, así que el nombre de algunas de las librerías puede cambiar, pero en general serán los mismos.
Venga, la lista de librerías que he usado para enlazar han sido las siguientes:
/usr/lib/bennugd/libbgdrtm.so
/usr/lib/bennugd/libgrbase.so
/usr/lib/bennugd/libblit.so
/usr/lib/libcv.so
/usr/lib/libhighgui.so
Y he añadido los siguientes flags de linkado:
-Wl,-soname -Wl,bennucv.so
Puede que alguna dependencia sea redundante, pero con eso he conseguido que funcione en mi portátil con Ubuntu 9.10:
(http://forum.bennugd.org/index.php?action=dlattach;topic=943.0;attach=833)

[Actualización] He cambiado la lista de dependencias, porque la que había puesto al principio era necesaria en caso de enlazar contra la librería libcv.a (estática) y la he reemplazado por la lista necesaria para enlazar contra la libcv.so (dinámica). Ésta es mucho más corta pero exige tener más cosas instaladas. Además, he añadido información sobre los flags de enlazado.
[Actualización 2] A ver si saco un rato y subo la lib (y la de Sandman, que hace mucho que le prometí que la subiría) a mi PPA.
Title: Re: Módulo de visión por computador
Post by: juanpe on February 09, 2010, 02:51:49 PM
Hola, lo primero aprovecho para enviar un karma para grisendo y para Drumpi por el trabajo que estais haciendo.
Grisendo el training for your eyes no sirve para solucionar problemas como el de tu hermano; el necesitaría unos tests más específicos y una terapia guiada siempre por un optometrista.
En qué consisten los juegos de demostración 2d y3d que comentas que tienes? (yo ahora no puedo verlos porque no me funciona la cámara).

saludos.
Title: Re: Módulo de visión por computador
Post by: FreeYourMind on January 09, 2012, 07:30:56 PM
Quote from: josebita on January 30, 2010, 08:41:33 PM
Venga, he usado el opencv del siguiente PPA:
https://launchpad.net/~gijzelaar/+archive/opencv2-karmic (https://launchpad.net/~gijzelaar/+archive/opencv2-karmic)
porque en Ubuntu viene opencv1 y parece que has usado la versión 2 (si intento usar la versión 1, me da algún error de compilación).
Además, lo he compilado contra la versión de Bennu de mi PPA, así que el nombre de algunas de las librerías puede cambiar, pero en general serán los mismos.
Venga, la lista de librerías que he usado para enlazar han sido las siguientes:
/usr/lib/bennugd/libbgdrtm.so
/usr/lib/bennugd/libgrbase.so
/usr/lib/bennugd/libblit.so
/usr/lib/libcv.so
/usr/lib/libhighgui.so
Y he añadido los siguientes flags de linkado:
-Wl,-soname -Wl,bennucv.so
Puede que alguna dependencia sea redundante, pero con eso he conseguido que funcione en mi portátil con Ubuntu 9.10:
(http://forum.bennugd.org/index.php?action=dlattach;topic=943.0;attach=833)

[Actualización] He cambiado la lista de dependencias, porque la que había puesto al principio era necesaria en caso de enlazar contra la librería libcv.a (estática) y la he reemplazado por la lista necesaria para enlazar contra la libcv.so (dinámica). Ésta es mucho más corta pero exige tener más cosas instaladas. Además, he añadido información sobre los flags de enlazado.
[Actualización 2] A ver si saco un rato y subo la lib (y la de Sandman, que hace mucho que le prometí que la subiría) a mi PPA.

Donde tienes este ejemplo ? He descargao la motion blur, pero en el ejemplo no me sale la imagen de fondo
Title: Re: Módulo de visión por computador
Post by: josebita on January 10, 2012, 01:52:00 PM
Quote from: FreeYourMind on January 09, 2012, 07:30:56 PM
Donde tienes este ejemplo ? He descargao la motion blur, pero en el ejemplo no me sale la imagen de fondo
Pues si te soy sincero, la tendría que buscar... ¿Dices que no te sale la imagen de la webcam?
Title: Re: Módulo de visión por computador
Post by: FreeYourMind on January 10, 2012, 02:42:26 PM
Así es, muevo la cabeza y funciona, pero el fondo en el juego es negro. Mi duda es si en los ejemplos a vosotros os salia imagen o era tb negro, pero ya veo que a ti te sale imagen.
Title: Re: Módulo de visión por computador
Post by: Ruter106 on March 08, 2014, 05:31:55 PM
Quote from: grisendo on January 30, 2010, 01:41:58 AM
Karmilla por la lección magistral y... a publicar la versión 0.0.1!

Directorio raíz:
http://www.grisendo.com/proyectos/bennuCV/

Módulo (y posibles dependencias):
http://www.grisendo.com/proyectos/bennuCV/bennuCV-0.0.1/bin/

Código fuente (y proyectos para Code::Blocks):
http://www.grisendo.com/proyectos/bennuCV/bennuCV-0.0.1/src/

Juegos de demostración 2D y 3D:
http://www.grisendo.com/proyectos/bennuCV/demos/

Explicación de las funciones:
http://www.grisendo.com/proyectos/bennuCV/funciones.txt

Algunos objetos para tracking:
http://www.grisendo.com/proyectos/bennuCV/haarcascades/


Nota: Teóricamente también está para Linux... digo teóricamente porque
aunque he compilado y generado el .so, no he podido probarlo. Al compilar
el código bennu, me dice que no lo encuentra, ni en la carpeta de modules,
ni en la actual, he leído mil posts y no he arreglado, ni siquiera la encuentra
moddesc...

Acabo de leerme todo el tema y me quito el sombrero Grisendo!!!  ;)  No obstante la direcciones proporcionadas ya no son accesibles.

No sé si alguien sabrá si se llegó a integrar esta librería... o se puede acceder al contenido de los enlaces de otra forma.

Yo actualmente trabajo con Realidad Aumentada y he trabajado bastante con OpenCV. Al ver la librería se me ha iluminado la mirada. Hace poco que ando por el foro, pero tal vez podría dar un empuje en mis ratos libres a esta librería si se me facilita el acceso.

Últimamente he trabajado con temas de tracking óptico sin marcadores basado en modelos 3D y en breves empezaré con temas de reconstrucción 3D.

Os dejo una demo de lo que fue mi proyecto de fin de carrera:

http://www.youtube.com/watch?v=JJO4gyht5VY
Title: Re:Módulo de visión por computador
Post by: l1nk3rn3l on March 09, 2014, 02:59:02 AM
En el bennupack seccion DLL examples consigues esa y otras mas ...
Title: Re: Módulo de visión por computador
Post by: Ruter106 on March 09, 2014, 08:34:46 AM
¿Sabes si el código fuente de este módulo también está disponible en el bennupack?

Enviado desde mi GT-I9001 usando Tapatalk 2

Title: Re:Módulo de visión por computador
Post by: l1nk3rn3l on March 09, 2014, 02:08:25 PM
si de todo hay fuentes .. por eso se llama pack .. para que aprendas incluso lo que no quieres   ;D