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