Inicio

Navegación

  • Foros
  • Buscar
  • Idiomas

Proyectos

  • Howto
  • Open Hardware
  • Open Software

Inicio de sesión

  • Crear nueva cuenta
  • Solicitar una nueva contraseña

Datos Extras

  • Trabajo en Vivo

ElRinconDelTurko

  • Yo C++
  • Nuevo Hallazgo en programa GNU
  • Correr distribuciones linux en el pendrive
  • Dos Mods En Cuestion De Horas:
  • Auto a radio control

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.

Comparta este post con:
  • Delicious
  • Digg
  • StumbleUpon
  • Newsvine
  • Facebook
  • Google
  • Yahoo
  • Twitter
  • Inicie sesión o regístrese para enviar comentarios