Buscar en este blog

Mostrando entradas con la etiqueta cvQueryFrame. Mostrar todas las entradas
Mostrando entradas con la etiqueta cvQueryFrame. Mostrar todas las entradas

viernes, 18 de mayo de 2007

SIMULANDO EL FUNCIONAMIENTO DE UNA CÁMARA FOTOGRÁFICA CON OPENCV (18-Mayo-07)

En este apartado se presenta el código fuente de un programa que permite enfocar la imagen observada en la computadora para posteriormente almacenarla en el disco duro. El programa permite guardar 10 imagenes.

#include "stdio.h"
#include "conio.h"
#include "cv.h"
#include "highgui.h"
#include "cxcore.h"
#include "cvaux.h"

int main(){

char* nomImages[] = {".\img_1.jpg", ".\img_2.jpg", ".\img_3.jpg", ".\img_4.jpg", ".\img_5.jpg", ".\img_6.jpg", ".\img_7.jpg", ".\img_8.jpg", ".\img_9.jpg", ".\img_10.jpg"};

CvCapture* capture = cvCaptureFromCAM(-1);
if(!capture){
printf("Error: Capture = NULL\n");
getchar();
return -1;
}

cvNamedWindow("cvSaveImage", 1);

for(int i=0; i<10;>

while(1){

IplImage* frame = cvQueryFrame(capture);

if(!frame) {
printf("Error: Frame = NULL\n");
getchar();
return -1;
}

cvShowImage("cvSaveImage", frame);

if((cvWaitKey(10) & 255)==27) break;

}

IplImage* frame = cvQueryFrame(capture);

if(!frame) {
printf("Error: Frame = NULL\n");
getchar();
return -1;
}

cvShowImage("cvSaveImage", frame);

cvSaveImage(nomImages[i], frame);

printf("imagen %d",i);

cvWaitKey(0);

}

cvReleaseCapture(&capture);
cvDestroyWindow("cvSaveImage");
return(0);

}

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
}