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 frameEste if se pone porque no es buena idea intentar operar sobre una imagen que no existe.
printf("Algo malo ha pasado, llamar al SWAT\n");
exit(0);
}
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);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.
cvWaitKey(2);
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
No hay comentarios:
Publicar un comentario