Jugando con Opencv
Posted by mibanez | Posted in Computación Gráfica, Memoria de Titulo, opencv | Posted on 18-07-2009
2

Para la gente que aún no lo conoce, opencv es una biblioteca de funciones de c/c++ para visión por computador bajo el desarrollo constante de intel (bajo licencia FREE BSD) para , cuenta con muchísima documentación en la red y en la actualidad posee más de 500 algoritmos listos para ser utilizados. sus principales características son:
- Manejo de estructuras básicas
- Procesamiento de imágenes
- Análisis estructural
- Análisis de movimiento y seguimiento de objetos
- Reconocimiento de objetos
- Calibración de cámara y reconstrucción de escenas 3D
- Manejo de escenas de vídeo
- Construcción de interfaces gráficas de usuario (GUI)
Bueno luego de esta pequeña introducción vamos a la instalación de la biblioteca, si bien posee soporte para windows – mac – linux, en este pequeño articulo veremos como instalarla en Linux específicamente en Ubuntu (9.04 – 8.10).
Lo primero que tenemos que hacer es asegurarnos de poseer el compilador C/C++ y los esenciales de ubuntu, para ello ingresamos a una terminal y escribimos:
sudo apt-get install build-essential
al cabo de unos minutos o segundos (depende de tu velocidad de conexión) la operación terminara con éxito.
Ahora es momento de instalar las lib, pero también las libdev (por ejemplo, libpng12dev), para ello, nos vamos al terminal y tipiamos :
sudo apt-get install libpng12-dev
Para el siguiente paso de este mini tutorial es la instalación de la biblioteca esto lo podemos realizar de dos formas:
- Vía apt-get con:
sudo apt-get install libcv-dev libcv1 libcvaux-dev libcvaux1 libhighgui-dev libhighgui1 - Compilando el código que se encuentra en este link , luego de completar hacemos lo siguiente:
mv opencv-1.1pre1.tar.gz /usr/src/
cd /usr/src/
tar -xvzf opencv-1.1pre1.tar.gzpreparamos nuestro café favorito y luego de un rato si todo marcho bien la instalación esta completa.
./configure
make
make install
Admito que para realizar mi instalación realice el paso uno (vía apt) y todo funciona de pelos, luego de esto ya tenemos la biblioteca en nuestro computador…. ¿y ahora que?.
El Sigueinte paso es jugar con un pequeño ejemplo que no hace más que comprobar el correcto funcionamiento de la biblioteca, para ello abrimos nuestro ide favorito (en mi caso Geany) y ponernos a programas unos segundos:
#include "cv.h"
#include "highgui.h"
#include
char lena[]="lena.jpg"; // se define el fichero a cargar
int main()
{
IplImage* imagen=NULL;//inicializo imagen
imagen=cvLoadImage(lena,1);// cargamos la imagen en tres colores
cvNamedWindow( "Juego", 1); // creamos la ventana de nombre Juego
cvShowImage( "Juego", imagen ); // representamos la imagen en la ventana
cvSaveImage("guardando.jpg",imagen); // guardamos la imagen
cvWaitKey(0); // se pulsa tecla para terminar
cvDestroyAllWindows(); // destruimos todas las ventanas
cvReleaseImage(&imagen);
return 0;
}
Este trozo de código no hace mas que mostrar una imagen y luego guardarla con el nombre guardando.jpg la manera de compilar este ejemplo es en un terminal escribimos:
gcc juego.cpp -o juego -lcv -lhighgui -I/usr/include/opencv/ -L/usr/local/lib
para ejecutarlo en la misma consola ponemos
./juego
y eso seria todo. Espero que el mini tutorial sea de ayuda para quienes se estan iniciando en opencv y quedo atento a sus comentarios.
Saludos estimados
PD: les dejo la foto de lena en el link


Estimado Mario Ibañez:
Contacto con usted debido a que he buscado en la red un experto en el programa de analisis visual OpenCV y he encontrado que ha realizado numerosos trabajos de docencia y aplicaciones de la materia. He intantado desarrollar una aplicación pero para ello se necesita un experto, le expongo aqui el problema:
Se trata del analisis de una imagen de video,en la que aparece una pelota o bola que cada vez que pasa por un punto concreto fijo se tomaria una medida de tiempo, la pelota es de color claro y contrasta con el fondo, por lo que seria facilmente reconocible. Tambien se haria el mismo proceso con otro elemento en movimiento que tiene un color que contrasta mucho con el fondo, por lo que tambien se podria reconocer. Se tendrian que tomar medidas de tiempo de los dos elementos con una fiabilidad aproximada de centesimas de segundo en la secuencia de video. Tambien me gustaria saber si hay alguna aplicacion directa de open cv en la que no se necesite conocimientos de programacion.
Me gustaria saber su opinion sobre la viabilidad de la aplicacion, si es posible desarrollarla, asi como contactar por otra via si es necesario.
Un cordial saludo
Fernando Martinez
Muy buenas; en respuesta a lo que pregunta Fernando, responderle que es relativamente sencillo en realizar esa aplicacion.
Si tiene alguna cuestión, puede preguntarme en susogv en gmail.
Gracias