Taller de OpenCV
-
Upload
scribidcaryoko -
Category
Documents
-
view
1.588 -
download
0
Transcript of Taller de OpenCV
Taller de OpenCV(Proyectos)
Dr. Jesús Carlos Pedraza OrtegaDra. Sandra Luz Canchola Magdaleno
Proyecto 1 en OpenCV (Cargar y desplegar una Imagen)#include <cv.h>
#include <highgui.h>
int main(int argc, char** argv)
{
// Declaración de la estructura donde se almacenara la imagen
IplImage* ImgOrg;
// Inicializar la estructura, cargando la imagen que se va a visualizar
ImgOrg = cvLoadImage("EraHielo3.jpg");
// Inicializa la ventana con el nombre “Origen” con el tamaño automático de la imagen
cvNamedWindow("Origen",CV_WINDOW_AUTOSIZE);
// Muestra la Imagen
cvShowImage("Origen",ImgOrg);
// Espera a que el usuario presione alguna tecla
cvWaitKey(0);
// Libera el espacio de memoria utilizado en la estructura
cvReleaseImage(&ImgOrg);
// Destruye la ventana “Origen”.
cvDestroyWindow("Origen");
return(0);
}
Resultado del Proyecto 1
NOTA: Hay que considerar que la imagen "EraHielo3.jpg“ debe de estaren el mismo directorio que el archivo *.cpp
Proyecto 2 en OpenCV (Cargar una Imagen y convertirla en escala de grises) 1/2#include <cv.h>
#include <highgui.h>
int main(int argc, char** argv)
{
// Se necesitan 2 imágenes, y se efectúa la declaración de las estructuras correspondientes
IplImage* ImgOrg;
IplImage* ImgDst;
// Inicializar la primera estructura (ImgOrg), cargando la imagen
ImgOrg = cvLoadImage("EraHielo3.jpg");
// Inicializar la segunda estructura (ImgDst), creando una copia de la imagen original
ImgDst = cvCloneImage( ImgOrg );
ImgDst = cvCreateImage( cvSize(ImgOrg->width, ImgOrg->height), IPL_DEPTH_8U, 1 );
// De una imagen en color se convierte en escala de grises
cvCvtColor( ImgOrg, ImgDst, CV_BGR2GRAY );
// Inicializa la ventana con el nombre “Origen” y muestra la imagen
cvNamedWindow("Origen",CV_WINDOW_AUTOSIZE);
cvShowImage("Origen",ImgOrg);
Proyecto 2 en OpenCV (Cargar una Imagen y convertirla en escala de grises) 2/2
// Inicializa la ventana con el nombre “Destino” y muestra la imagen
cvNamedWindow(“Destino",CV_WINDOW_AUTOSIZE);
cvShowImage(“Destino",ImgDst);
// Espera a que el usuario presione alguna tecla
cvWaitKey(0);
// Libera el espacio de memoria utilizado en las estructuras
cvReleaseImage(&ImgOrg);
cvReleaseImage(&ImgDst);
// Destruye las ventanas “Origen” y “Destino”.
cvDestroyWindow("Origen");
cvDestroyWindow(“Destino");
return(0);
}
Resultado del Proyecto 2
Proyecto 3 en OpenCV (Cargar una Imagen a color, separar sus componentes R G B y mostrarlas) 1/2
#include "cv.h"
#include "cxcore.h"
#include "highgui.h"
int main(int argc, char** argv)
{
// Cargar la imagen
IplImage* img = cvLoadImage( "EraHielo3.jpg",1 );
//Crear apuntadores a estructuras para los canales de RGB
IplImage* r = cvCreateImage( cvGetSize(img), IPL_DEPTH_8U, 1 );
IplImage* g = cvCreateImage( cvGetSize(img), IPL_DEPTH_8U, 1 );
IplImage* b = cvCreateImage( cvGetSize(img), IPL_DEPTH_8U, 1 );
// Crear apuntadores a estructuras para la imagen en HSV
IplImage* hsv = cvCreateImage( cvGetSize(img), 8, 3 );
// Cambio de espacio de color RGB -> HSV
cvCvtColor(img, hsv, CV_BGR2HSV);
Proyecto 3 en OpenCV (Cargar una Imagen a color, separar sus componentes R G B y mostrarlas) 2/2
// Obtener los canales R G B
cvSplit( img, r, g, b, NULL );
// Crear todas las ventanas
cvNamedWindow("Imagen HSV", CV_WINDOW_AUTOSIZE);
cvNamedWindow( "Imagen RGB", CV_WINDOW_AUTOSIZE );
// Para los canales R G B
cvNamedWindow( "Canal R", CV_WINDOW_AUTOSIZE );
cvNamedWindow( "Canal G", CV_WINDOW_AUTOSIZE );
cvNamedWindow( "Canal B", CV_WINDOW_AUTOSIZE );
// Mostrar las imagenes
cvShowImage( "Imagen RGB", img );
cvShowImage( "Imagen HSV", hsv);
// Mostrar cada canal R G B de forma independiente
cvShowImage( "Canal R", r);
cvShowImage( "Canal G", g);
cvShowImage( "Canal B", b);
Proyecto 3 en OpenCV (Cargar una Imagen a color, separar sus componentes R G B y mostrarlas) 2/2
// Para salir del programa presione la tecla ESC
cvWaitKey(0);
// Destruir las ventanas que se crearon
cvDestroyWindow("Imagen HSV");
cvDestroyWindow("Imagen RGB");
cvDestroyWindow("Canal R");
cvDestroyWindow("Canal G");
cvDestroyWindow("Canal B");
// Liberar espacio de memoria utilizado por las estructuras
cvReleaseImage( &img );
cvReleaseImage( &r );
cvReleaseImage( &g );
cvReleaseImage( &b );
cvReleaseImage( &hsv );
return 0;
}
Resultado del Proyecto 3