sábado, 28 de febrero de 2009

Primeros pasos

Como Roma no se hizo en una hora lo primero es empezar por cosas pequeñas y básicas, y en el mundo de la programación esto se llama un primer programa de acercamiento....

Así que he escrito un código que toma imágenes de la webcam y las muestra por pantalla, en principio la cámara da 320x240 de resolución porque la cámara sobre la que estoy recogiendo es la webcam del portátil y no tiene mayor resolución, aunque la idea es conseguir una cámara que dé al menos 1024x768 para no tener que reescalar para actuar sobre la pantalla.

cvSetCaptureProperty(capture,CV_CAP_PROP_FRAME_WIDTH,320.0);
cvSetCaptureProperty(capture,CV_CAP_PROP_FRAME_HEIGHT,240.0);
cvSetCaptureProperty(capture,CV_CAP_PROP_FPS,30.0);

Las anteriores instrucciones son la forma que nos da la librería opencv para configurar la cámara, todas ellas actúan sobre una estructura CvCapture que representa la webcam.

A partir de este momento la cámara ya está configurada y le puedo pedir imágenes, esto se hace de la siguiente forma:
if(!cvGrabFrame(capture)){//pide un frame
printf("Algo malo ha pasado, llamar al SWAT\n");
exit(0);
}
Este if se pone porque no es buena idea intentar operar sobre una imagen que no existe.

Una vez que el frame se ha pedido hay que asignarlo a una estructura de tipo IplImage, también de opencv que permite operar sobre la imagen y también enseñarla por pantalla.

Para enseñarla por pantalla se hace lo siguiente:
cvShowImage("imgWin", img);
cvWaitKey(2);

Esto abre una ventana en la que se muestra la imagen que antes pedí a la webcam, resulta que hay que hacer que el programa espere un tiempo entre una imagen y otra para que se muestren correctamente (aun tratando de comprenderlo), por lo que la segunda instrucción hace una pausa de 2 milisegundos.

Si todo esto se pone en un bucle podría insertar la lógica del programa, pero esto lo dejo para próximos capítulos ...

Nota para buenos programadores: Cerrar la captura de la camara como si fuera un fichero
cvReleaseCapture(&capture);

Codigo del programa

lunes, 24 de noviembre de 2008

Desarrollando

El desarrollo del proyecto se llevará a cabo con C++ y las librerías de OpenCV.

Primero he tenido que instalar un entorno de desarrollo, he elegido Wascana ya que según he visto es el más sencillo de usar y más sencillo para incluir las librerías.

Después me bajé las librerías de OpenCV para windows de la página oficial http://sourceforge.net/project/showfiles.php?group_id=22870


Con todo esto instalado solo hace falta añadir las librerías en el proyecto.

En las opciones de compiler hay que añadir las siguientes cosas:


"C:\Program Files\OpenCV\cv\include"
"C:\Program Files\OpenCV\cvaux\include"
"C:\Program Files\OpenCV\cxcore\include"
"C:\Program Files\OpenCV\otherlibs\highgui"




En opciones de linker hay que añadir:

C:\Program Files\OpenCV\lib"




Con esto ya está listo el entorno para empezar a programar en C++ usando OpenCV, así que lo siguiente que estoy haciendo es aprender las funciones que ofrecen estas librerías.

martes, 28 de octubre de 2008

Descripción

El proyecto "Multitouch visual" consiste en desarrollar una pantalla multitouch utilizando una cámara donde se recogerán los gestos para que interactúe con diferentes aplicaciones, algunas de ellas específicas y otras de uso general, aprovechando en alguna ocasión la funcionalidad que tienen incluída.


El primer acercamiento al proyecto consiste en saber cual es el fundamento del multitouch (más información).

Actualmente en el mercado hay diferentes multitouch desarrolladas adaptadas a las necesidades del usuario.






La pantalla que desarrollaré en el proyecto tendrá una implementación diferente ya que constará de una cámara debajo de una superficie que será la de "contacto", donde habrá que identificar los puntos.

Para poder hacer el interfaz usaré OpenCV, y para la pantalla usaré una webcam y una superficie semi transparente.