Navegación
Proyectos
Inicio de sesión
Datos Extras
Coundown Ubuntu
Ejemplos Básicos con OpenCv
Turkos — Jue, 07/29/2010 - 18:02
Hace tiempo quería hacer un post con ejemplos básicos con OpenCv, para que el principiante que recién toma contacto con esta librería pueda tener un trampolín que le permita realizar las primeras practicas en el mundo del procesamiento de imágenes
Me llegan E-mails a mi correo diciendo, Ernesto, tengo muchas ganas de comenzar con OpenCv, ya que es una herramienta potente y el Procesamiento Digital de Imágenes es un campo prometedor y con mucho futuro, pero no se por donde empezar.
Yo les respondo enviando algunos ejemplos, a lo cual me responden, Ernesto vos haces estos programas porque sabes mucho de esta librearía. Entonces yo nuevamente les respondo!!!!! ya voy a hacer un post con ejemplos fáciles y no me llamo Ernesto!!!!! dejen de llamarme Ernesto!!! porque me dicen Ernesto????!!!!
Ejemplo 1:
Abrir una foto con la librería OpenCv:
#include < opencv/highgui.h >
int main( int argc, char** argv )
{
IplImage* img = cvLoadImage(argv[1],CV_LOAD_IMAGE_UNCHANGED ); //Cargamos la imagen que le pasamos
//al programa como argumento
//CV_LOAD_IMAGE_UNCHANGED nos
//permite cargar la imagen tal cual es
cvNamedWindow( "Ejemplo1", CV_WINDOW_AUTOSIZE ); //creamos una ventana con el nombre Ejemplo 1
//El parametro CV_WINDOW_AUTOSIZE nos permite que tenga
//el tamaño de la imagen automaticamente
cvShowImage("Ejemplo1", img );
//mostramos la imagen en la ventana
//anteriormente creada
cvWaitKey(0);
//se queda esperando a que se presione
//una tecla
cvReleaseImage( &img );
//se libera el recurso de memoria donde está la imagen
cvDestroyWindow("Ejemplo1" );
//destruimos la ventana
}
Ejemplo 2:
Dibujar un rectángulo en una imagen:
#include < opencv/highgui.h >
int main( int argc, char** argv )
{
CvPoint pt1, pt2;
//Tipo de datos que guardan puntos
IplImage* img = cvLoadImage(argv[1],CV_LOAD_IMAGE_UNCHANGED );
//Cargamos la imagen que le pasamos
//al programa por argumento
//CV_LOAD_IMAGE_UNCHANGED nos permite
//cargar la imagen tal cual es
cvNamedWindow( "Ejemplo2", CV_WINDOW_AUTOSIZE ); //creamos una ventana con el nombre Ejemplo 1
//El parametro CV_WINDOW_AUTOSIZE nos permite que tenga
//el tamaño de la imagen
pt1.x = 100; //coordenada x
pt1.y = 10; //coordenada y
pt2.x = 220;
pt2.y = 150;
cvRectangle( img, pt1 , pt2 , CV_RGB(0,0,255), 3, 8, 0 ); //Dibujamos el rectangulo
cvShowImage("Ejemplo2", img );
//mostramos la imagen en la ventana
//anteriormente creada
cvWaitKey(0); //se queda esperando a que se presione
//una tecla
cvReleaseImage( &img ); //se libera el recurso de memoria donde está la imagen
cvDestroyWindow("Ejemplo2" ); //destruimos la ventana
}
Ejemplo 3:
Crear una región de interés y mostrarla en otra ventana:
#include < opencv/highgui.h >
int main( int argc, char** argv )
{
CvPoint pt1, pt2;
int width;
int height;
IplImage* img = cvLoadImage(argv[1],CV_LOAD_IMAGE_UNCHANGED );
//Cargamos la imagen que le pasamos
cvNamedWindow( "Ejemplo3", CV_WINDOW_AUTOSIZE );
//creamos una ventana con el nombre Ejemplo 1
cvNamedWindow( "ROI", CV_WINDOW_AUTOSIZE);
//creamos una ventana con el nombre ROI
//donde estará la región de interes
pt1.x = 100;
pt1.y = 10;
pt2.x = 220;
pt2.y = 150;
width = pt2.x - pt1.x;
height = pt2.y - pt1.y;
cvShowImage("Ejemplo3", img ); //mostramos la imagen en la ventana
//anteriormente creada
cvSetImageROI( img, cvRect( pt1.x, pt1.y, width, height ));
cvShowImage("ROI", img ); //mostramos la imagen en la ventana
//anteriormente creada
cvWaitKey(0); //se queda esperando a que se presione
//una tecla
cvReleaseImage( &img ); //se libera el recurso de memoria donde está la imagen
cvDestroyWindow("Ejemplo3" ); //destruimos la ventana
cvDestroyWindow("ROI" ); //destruimos la ventana
}
Ejemplo 4:
Cambiar el tamaño de una imagen:
#include < opencv/highgui.h >
#include < opencv/cv.h >
int main( int argc, char** argv )
{
IplImage* img = cvLoadImage(argv[1],CV_LOAD_IMAGE_UNCHANGED ); //Cargamos la imagen que le pasamos
IplImage *ampl = cvCreateImage( cvSize(500,500),IPL_DEPTH_8U, 3); //reservamos memoria para la imagen amplificada
cvNamedWindow( "Ejemplo4", CV_WINDOW_AUTOSIZE ); //creamos una ventana con el nombre Ejemplo 1
cvNamedWindow( "AMP", CV_WINDOW_AUTOSIZE); //creamos una ventana con el nombre AMP
//donde estará la imagen ampliada
cvResize(img,ampl,CV_INTER_CUBIC); // escalado de la imagen
//del tamaño de la imagen creada
cvShowImage("Ejemplo4", img ); //mostramos la imagen en la ventana
//anteriormente creada
cvShowImage("AMP", ampl ); //mostramos la imagen en la ventana
//anteriormente creada
cvWaitKey(0); //se queda esperando a que se presione
//una tecla
cvReleaseImage( &img ); //se libera el recurso de memoria donde está la imagen
cvDestroyWindow("Ejemplo4" ); //destruimos la ventana
cvDestroyWindow("AMP" ); //destruimos la ventana
}
Ejemplo 5:
Imprimir texto dentro del dibujo:
#include < opencv/highgui.h >
int main( int argc, char** argv )
{
CvFont font;
CvPoint pt1;
cvInitFont( &font, CV_FONT_VECTOR0, 0.5, 0.5, 0, 2.0, CV_AA); //Inicializamos el código fuente
IplImage* img = cvLoadImage(argv[1],CV_LOAD_IMAGE_UNCHANGED ); //Cargamos la imagen que le pasamos
cvNamedWindow( "Ejemplo5", CV_WINDOW_AUTOSIZE ); //creamos una ventana con el nombre Ejemplo 1
pt1.x = 220;
pt1.y = 30;
cvPutText(img, "Hola Tux", pt1, &font,CV_RGB(255,190,44) );
cvShowImage("Ejemplo5", img ); //mostramos la imagen en la ventana
//anteriormente creada
cvWaitKey(0);
//se queda esperando a que se presione
//una tecla
cvReleaseImage( &img ); //se libera el recurso de memoria donde está la imagen
cvDestroyWindow("Ejemplo5" ); //destruimos la ventana
}
Bien, con esto y Facedetec pude realizar el proyecto GNU FALCO así que compilen estos ejemplos básicos en sus casas y realicen las pruebas que quieran. Espero que esto inspire a muchos para empezar con el uso de esta maravillosa librería.
- Inicie sesión o regístrese para enviar comentarios








