Buscar en este blog

miércoles, 14 de marzo de 2007

CAPTURANDO IMAGENES CON OPENCV (13 de Marzo de 2007)

Busqué en Internet algunos códigos para capturar imágenes desde una cámara, encontré uno en el foro wiki de opencv, que al parecer daba algunos problemas, lo analicé y tomé la parte de código que me serviría para capturar imágenes desde la webcam, el código que generé fue el siguiente:

1- #include "highgui.h"
2- #include "cv.h"
3- #include "stdio.h"
4- #include "iostream.h"
5-
6- int main() {
7-
8- CvCapture* capture = cvCaptureFromCAM(-1);
9- if (!capture){
10- fprintf(stderr, "Error: capture = NULL\n");
11- getchar();
12- return -1;
13- }
14-
15- cvNamedWindow("Ventana", 1);
16-
17- IplImage* frame = cvQueryFrame(capture);
18- if (!frame) {
19- fprintf(stderr, "Error: frame = NULL\n");
20- getchar();
21- return -1;
22- }
23- cvShowImage("Ventana", frame);
24- cvWaitKey(0);
25- cvReleaseCapture(&capture);
26- cvDestroyWindow("Ventana");
27- return(0);
28- }

El programa anterior crea un capture (línea 8) para hacer referencia a la webcam instalada en la máquina, también crea una variable (frame) que apuntará a la imagen que recibe la cámara. Posteriormente se crea una ventana en donde se mostrará lo sensado por la cámara y finalmente se liberará el capture y se destruirá la ventana.
Si se quiere capturar una secuencia de cuadros, es decir un flujo de video, hay que agregar el siguiente código:

while(1){ //mientras sea verdadero
IplImage* frame = cvQueryFrame(capture);//graba un cuadro tomado por la cámara
if (!frame) {
fprintf(stderr, "Error: frame = NULL\n");
getchar();
return -1;
}
cvShowImage("Ventana", frame);//muestra el cuadro tomado por la cámara
if((cvWaitKey(10) & 255)==27) break;//rompe el ciclo while si se oprime la tecla esc
}

No hay comentarios: