Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Guin de Prcticas
Procesamiento Audiovisual
3 II/ITIS
OpenCV
Guin de prcticas
Descripcin
Instalacin
Uso de la librera
El tipo imagen
Crear imgenes
E/S bsica
Resumen
DESCRIPCIN
Procesamiento Audiovisual
Sesin 2. Instalacin y uso de OpenCV en Qt Creator
Guin de Prcticas
7. Lo instalamos con todas las opciones por defecto. Pero, ojo, la de aadir el directorio
de OpenCV al PATH del sistema debemos marcarla.
Procesamiento Audiovisual
Sesin 2. Instalacin y uso de OpenCV en Qt Creator
Guin de Prcticas
Procesamiento Audiovisual
Sesin 2. Instalacin y uso de OpenCV en Qt Creator
Guin de Prcticas
Procesamiento Audiovisual
Sesin 2. Instalacin y uso de OpenCV en Qt Creator
Guin de Prcticas
#include <cxcore.h>
#include <cv.h>
#include <highgui.h>
20. Vamos ahora a aadir algo de cdigo al proyecto, para comprobar que todo ha ido
bien. Aadimos un botn al formulario. En el slot clicked() asociado a su pulsacin
escribimos el siguiente cdigo:
void MainWindow::on_pushButton_clicked()
{
IplImage *img= cvLoadImage("imagen.jpg");
cvNamedWindow("Imagen", 0);
cvShowImage("Imagen", img);
cvReleaseImage(&img);
}
Procesamiento Audiovisual
Sesin 2. Instalacin y uso de OpenCV en Qt Creator
Guin de Prcticas
32. La funcin cvLoadImage admite los formatos BMP, DIB, JPG, JPE, JPEG, PBM, PGM,
PPM, SR, RAS, TIF y TIFF. En HighGUI2 se aade GIF.
33. Clonar una imagen existente: cvCloneImage.
IplImage* cvCloneImage (IplImage* entrada)
cvNamedWindow("Imagen", 0);
IplImage *img= cvLoadImage("imagen.jpg");
for (int i= 0; i<255; i++) {
IplImage *cop= cvCloneImage(img);
cvSubS(cop, cvScalarAll(i), cop); // Restar una constante
cvShowImage("Imagen", cop);
cvReleaseImage(&cop);
cvWaitKey(10);
}
Procesamiento Audiovisual
Sesin 2. Instalacin y uso de OpenCV en Qt Creator
Guin de Prcticas
cvDestroyWindow("Imagen");
cvReleaseImage(&img);
34. Recordar: en cualquier caso, se deben liberar todas las imgenes al dejar de usarlas,
con cvReleaseImage(IplImage **img).
ENTRADA/SALIDA BSICA
35. Como hemos visto, HighGUI incluye un mecanismo muy sencillo para crear ventanas
en las que mostrar imgenes de tipo IplImage. Las ventanas de HighGUI se referencian
por un nombre, que es una cadena de tipo char*.
36. Para crear una nueva ventana se usa:
void cvNamedWindow(char *nombre, int flag)
36.1. Si ya existe una ventana con ese nombre, no hace nada.
36.2. El parmetro flag indica si se puede redimensionar el tamao de la ventana (valor
0) o no (valor 1).
36.3. En los ejemplos de los anteriores puntos, ver la diferencia entre poner
cvNamedWindow("Imagen", 0); y cvNamedWindow("Imagen",1);
37. Una vez creada una ventana, se muestran las imgenes en ella con:
void cvShowImage(char *nombre, IplImage *img)
El primer parmetro es el nombre de la ventana. Si no se existe, no hace nada. El
segundo parmetro es la imagen a mostrar.
38. La ventana se puede cambiar de tamao con cvResizeWindow y de posicin con
cvMoveWindow. Ver la ayuda. Probar, por ejemplo, el siguiente cdigo:
cvNamedWindow("Imagen", 0);
IplImage *img= cvCreateImage(cvSize(320,240), IPL_DEPTH_8U, 3);
for (int i= 0; i<256; i++) {
cvSet(img, CV_RGB((i&7)*36,(i&28)*9,i&224));
cvShowImage("Imagen", img);
cvMoveWindow("Imagen", i, 100);
cvWaitKey(10);
}
cvReleaseImage(&img);
Procesamiento Audiovisual
Sesin 2. Instalacin y uso de OpenCV en Qt Creator
Guin de Prcticas
42. En el caso de los archivos JPG, se puede indicar la calidad de compresin JPG
llamando a la funcin cvSaveImage con un tercer parmetro adicional.
IplImage *img= cvLoadImage("imagen.bmp");
int param[2]= {CV_IMWRITE_JPEG_QUALITY, 2};
cvSaveImage("imagen.jpg", img, param);
cvReleaseImage(&img);
Procesamiento Audiovisual
Sesin 2. Instalacin y uso de OpenCV en Qt Creator
Guin de Prcticas
cvReleaseImage(&img);
RESUMEN