alanBoy

Your awesome Tagline

Posts tagged linux

1 note &

Getting Started with OpenCV

OpenCV ( Open Source Computer Vision) es una libreria de funciones para el procesamiento en tiempo real de vision de computadora, desarrollada por Intel.

Yo uso OpenCV para desarrollar un algoritmo de realidad aumentada. Donde un dispositivo de video-grabación, que apunta a un texto, es capaz de extraer el texto de la imagen.

Imaginen lo siguiente: instalar una camara con una pequeña computadora en cada microbús de la ciudad. Cuando el microbus transita por las calles, la camara va detectando los distintos letreros viales. Digamos, “Máxima Velocidad 50 Km/h”. Entonces, la computadora extrae el texto, y asi entonces, controla el acelerador del camión para que este no supere los 50Km/h. Interesante, ¿No?

Pues asi entonces, me embarque en la tarea de intentarlo. Despues de una semana de leer, programar e inventar cosas, logre salir con este primer demo :

De verdad que en cuanto a innovacion se refiere, este primer demo dejo mucho que desear. Fue mas bien como para familiarizarme con OpenCV. Lo que este primer algoritmo hace es, buscar pixeles opacos, frente a pixeles claros. Segun yo (en aquel entonces), un texto no eran mas que pixeles mas opacos en un fondo mas claro, y siempre estaban alineados horizontalmente.

Evidentemente estaba en un grande error. Así entonces, una vez con un poco mas de conocimiento en OpenCV decidi hacer un poco mas de investigacion del tema, y me tope con esto :

International Journal of Signal Processing: An Edge-based Text Region Extraction Algorithm for Indoor Mobile Robot Navigation
de Jagath Samarabandu, Member, IEEE, and Xiaoqing Liu 

Y resumire el funcionamiento de su algoritmo con esta imagen :

 

Una semana mas de ardua lectura y mucho café, logre salir con esto :

Como se puede apreciar, es mucho mas acertado a la hora de encontrar las regiones de interés.

En fin, la idea del post es dar una idea general de todo lo que se puede lograr en poco tiempo con OpenCV y claro, como comenzar a usarlo. 

Ve a tu terminal mas cercana, yo estoy corriendo Ubuntu 9.10, e instala los paquetes necesarios con esta linea :

apt-get install libcv1 libcvaux1 libhighgui1 libcv-dev libcvaux-dev libhighgui-dev libavcodec-dev libavformat-dev libavutil-dev libavutil49 pkg-config g++

Y basicamente… es todo :P

Ahora estas listo para compilar codigo que usa OpenCV. Vamos a poner un pequeño ejemplo :

#include "highgui.h"

int main(int argc, char** argv)
{
     IplImage* img = cvLoadImage( argv[1] );
     cvNamedWindow( "Example1", CV_WINDOW_AUTOSIZE );
     cvShowImage( "Example1", img );
     cvWaitKey(0);
     cvReleaseImage( &img );
     cvDestroyWindow( "Example1" );
     exit(0);
}

Guarda este archivo donde gustes, y ahora, compilemos con la siguientes linea:

g++ -ggdb -I/usr/include/opencv -lhighgui nombre_del_archivo.c -o salida

Generalmente hago un script que compile y ejecute el programa, y asi evitar confusiones y errores de dedo, aparte de que es mas rápido. Una vez que compile, simplemente corre el programa, pasandole como argumento el nombre de un archivo de imagen. La imagen debe abrirse en una ventana.

El resto, es leer. Mucho. Y divertirse. Aque dejo algunos links que me han servido:

Filed under opencv computer vision c++ programacion linux