miércoles, 22 de abril de 2009

ABRIR WEBCAM

Después haber escrito la ultima entrada del blog, decidí continuar con lo que funcionaba y "rayarme" con lo que no funcionaba, por eso volvimos a instalar la biblioteca 1.1.

El primer programita que hice fue abrir la webcam y mostrar 1OO frames en una ventana, para que esto funcione he utilizado de opencv las siguientes librerias:

cvNameWindow: crea la ventana
int cvNamedWindow (const char * name, int flags CV_WINDOW_AUTOSIZE =);
name: Nombre de la ventana que se utiliza como identificador de la ventana y aparece en el titulo de la ventana.
flags: caracteristicas de la ventana.
Creado ventanas son mencionados por sus nombres. Si la ventana con ese nombre ya existe, la función no hace nada.
---------------------------------------------------------------------------------- cvDestroyWindow Destruye una ventana
void cvDestroyWindow (const char * name);
name: Nombre de la ventana, para ser destruidos.
----------------------------------------------------------------------------------
cvWaitKey Espera a que se pulsa una tecla
int cvWaitKey (int delay = 0);
delay: retraso en milisegundos
Espera a que se pulse un tecla indefinidamente. Devuelve el código de la tecla pulsada o -1 si no se presiona una tecla en el tiempo especificado.
----------------------------------------------------------------------------------
cvShowImage Muestra la imagen en la ventana especificada
void cvShowImage( const char* name, const CvArr* image );
name: Nombre de la ventana.
imagen: Imagen que se muestra.
La función cvShowImage muestra la imagen en la ventana especificada. Si la ventana se ha creado con CV_WINDOW_AUTOSIZE entonces la imagen se muestra con su tamaño original, de lo contrario la imagen se escala para ajustarse a la ventana.
-----------------------------------------------------------------------------------
CvCapture Estructura de la captura de vídeo
typedef struct CvCapture CvCapture;
La estructura CvCapture no tiene interfaz pública y sólo se utiliza como parámetro para la captura de funciones de vídeo.
-----------------------------------------------------------------------------------
cvCaptureFromCAM
Asigna CvCapture estructura y se une a la cámara de vídeo
CvCapture* cvCaptureFromCAM( int index );
index índice de la cámara que se va a utilizara, si sólo hay una cámara o no importa que cámara se va a utilizar, se puede poner -1.
Cuando no se valla a utilizar mas estructura CvCapture debe ser libertada por la funcion cv ReleaseCapture.
------------------------------------------------------------------------------------
cvReleaseCapture
libera la estructura Capture, se utiliza la estructura es llamada con un ccvCaptureFromAVI o cvCaptureFromCAM.
--------------------------------------------------------------------------------------
cvQueryFrame
Grava y devuelve un cuadro de la cámara o AVI.
IplImage* cvQueryFrame( CvCapture* capture );
capture captura
CvCapture proviene de la cámara o el archivo AVI.
La función cvQueryFrame
grava un fotograma de la cámara o AVI y devuelve el puntero a la imagen. En realidad esta función pide sucesivamente cvGrabFrame y cvRetrieveFrame. La imagen devuelta no debe ser liberado por el usuario.

-----------------------CODIGO----------------------
-----------------------------------------


#include
#include
#include
#include
int main (int argc, char **argv){
CvCapture* capture = 0;
IplImage* frame = 0;
int nframes=0;
cvNamedWindow( "VideoCaptura", 1 );
printf("Capture from camera\n");
capture = cvCaptureFromCAM(0);
if(!capture){
printf( "Can't initialize video capturing\n\n" );
return -1;
}
for(;;){
printf("%d\n",nframes);
frame=cvQueryFrame( capture );
if (!frame)
break;
cvShowImage( "VideoCaptura", frame );
cvWaitKey(1);
nframes++;
if (nframes==100){
cvReleaseCapture(&capture);
return 0;
}
}
cvDestroyWindow("VideoCaptura");
return 0;
}

No hay comentarios:

Publicar un comentario