Lenguaje C

7.996 2

OpenCV en Linux

OpenCV (Open Source Computer Vision Library) es una biblioteca de código abierto que incluye varios cientos de algoritmos de visión por computador. Esta publicada bajo una licencia BSD, lo cual permite que sea usada libremente para propósitos comerciales y académicos. Es multiplataforma, existiendo versiones para Windows, GNU/Linux, Mac OSX, iOS y Android. Así como también, podemos encontrar interfaces para C, C++, Java y Python.

Posee una estructura modular, estando agrupadas la mayoría de funciones de la biblioteca en los siguientes módulos:

  • CORE: donde se defienen las estructuras de datos básicas que utilizan el resto de modulos.
  • IMGPROC: módulo de procesamiento de imágenes, donde encontraremos funciones para el filtrado lineal/no lineal, transformaciones afines, conversión del espacio de color, histogramas….
  • VIDEO: modulo de análisis de video que incluye algoritmos para la estimación del movimiento, extracción del fondo y seguimiento de objetos.
  • CALIB3D: Algoritmos básicos de visión multiple como calibración de camaras estereo, correspondencia o reconstrucción 3D.
  • FEATURES2D: detectores de características, descriptores y comparadores.
  • OBJDETECT: detección de objetos e instancias de las clases predefinidas, como por ejemplo: caras, ojos, gente, coches….
  • HighGUI: todo lo relacionado a la interfaz grafica de OpenCV y las funciones que permiten importar imágenes y video.
  • GPU: algoritmos acelerados por hardware para distintos modulos OpenCV.
  • y algunos otros modulos de ayuda.

Cabe decir que es una biblioteca con muchas posibilidades y con una amplia comunidad de desarrolladores. Por lo que, aunque es compleja utilizar, normalmente encontraremos soporte y ayuda para cualquier problema que podamos tener.

Vamos a ver como instalarla en Linux.

Instalación con apt-get

Si tenemos una versión actualizada de Ubuntu esta es la opción mas sencilla y rapida, ya que en las ultimas versiones de Ubuntu (a partir de la 12.04) o Debian podemos instalarla directamente desde apt-get.

Primero actualizamos:

y una vez estemos a la última podemos instalar la biblioteca en sí con:

Para poder usarla con Python necesitaremos instalar el siguiente paquete:

Por último, podemos bajarnos la documentación y algunos ejemplos de aplicaciones ya hechas con:

Como veis no tiene más complicación. A partir de aquí podemos probar algunos de los ejemplos que encontraremos en la documentación de OpenCV.

Compilando e instalando las OpenCV

En el caso de que trabajemos con una versión de Ubuntu más antigua o con otro tipo de distribución Linux y no tengamos disponible el paquete, tendremos que compilar e instalar OpenCV nosotros mismos en nuestra máquina.

Herramientas

Antes de nada necesitamos una serie de herramientas imprescindibles:

  1. build-essential (GCC 4.4.x)
  2. cmake 2.6 o superior (CMake es una herramienta multiplataforma de automatización de código)
  3. pkg-config (para manejar los flags del compilador, usado en la configuración)

Si queremos usar las OpenCV con Python y trabajar de manera mas avanzada con las imagenes que procesemos, deberíamos también instalar los siguientes paquetes:

  1. libgtk2.0-dev (archivos de desarrollo para la biblioteca de interfaces de usuario GTK+. Este es el backend por defecto para highgui)
  2. python-dev (paquete de desarrollo para Python 2.6 o superior)
  3. python-numpy (Numpy)
  4. python-tk

Los instalaremos con:

Ahora vamos con los paquetes que se utilizan para leer y escribir imagenes o video en distintos formatos y mostrarlos en ventanas. No es necesario instalarlos, y de no hacerlo OpenCV usará las versiones por defecto que vienen con la biblioteca, pero en el caso de que algún modulo no funcione puede deberse a que no tiene el codec para leer el video o algún problema relacionado con la falta de alguno de estos paquetes.

 

Código fuente

Una vez tengamos todo listo procedemos con la descarga del código de OpenCV. Podemos obtenerlo de la web oficial o directamente desde Sourceforge. Las ultimas versiones ahora también están en GitHub. Cogemos el que más rabia nos de:

GitHub:

ó

Sourceforge:

 

Compilación

Ahora vamos a generar el makefile que define que partes de OpenCV necesitan ser compiladas.

Ten en cuenta que la sintaxis de CMake es:

Creamos el directorio build y entramos:

Ahora configurarmos todo con lo que vayamos a trabajar de esta biblioteca y generar el makefile:

Comprueba que esto no te da ningún error. En caso de que sí, retrocede e instala los paquetes extra y ejecuta cmake de nuevo.

Ahora es momento de ir a por un café mientras compilamos OpenCV. Simplemente lanzamos make:

Por último, para instalar la biblioteca ejecutamos:

Este último paso no es necesrio si usamos CMake en nuestros proyectos. Si no quieres instalarla en /usr/local, puedes usarla desde donde la has compilado.

Configuración

Ahora vamos a configurar la ruta a OpenCV. Esto se especifica creando un archivo llamado “opencv.conf” en el directorio “/etc/ld.so.conf.d/”. En este archivo añadiremos en una nueva linea /usr/local/lib.

y configuramos la biblioteca ejecutando:

Esto crea los enlaces y el cache necesarios para las bibliotecas más recientes que se encuentren en los directorios especificados en los archivos de /etc/ld.so.conf/(en este caso OpenCV)

Otra opción es exportar la ruta a la variable de entorno LD_LIBRARY_PATH y enlazar dinamicamente con ldconfig

y en el caso de que no hayamos instalado OpenCV en “/usr/local/lib”, que se encuentre en por ejemplo “~/OpenCV-2.4.5/build”

Como último paso nos queda establecer la variable de entorno PKG_CONFIG_PATH. Así que editamos “bash.bashrc”:

y añadimos:

Ahora cierra la consola y abre una nueva, reinicia el ordenador o haz logout y despues login de nuevo. De otra manera la configuración que acabamos de añadir en “bash.bashrc” no se cargará.

Probando

Vamos a probar algún ejemplo que viene con el código. Para ello, primero nos vamos al directorio donde hayamos descomprimido OpenCV.

En este directorio encontramos varios ejemplos en C para las OpenCV. Para compilarlos todos usamos el script “build_all.sh”.

Y probamos uno cualquiera como.

El programa deberá mostrar la siguiente imagen:

Esto es un ejemplo de detección facial con la famosa imagen de Lena. Si tenemos cámara en el ordenador podemos llamar simplemente al programa sin pasarle ningún parametro y ver que hace:

 

En el proximo post os hablaré de como instalarlas y configurarlas en Mac OSX. Los pasos a seguir son muy parecidos, de hecho el mismo código que usamos para linux nos vale para Mac.

Un saludo

Share on Facebook42Share on Google+8Tweet about this on Twitter9Buffer this pageFlattr the authorEmail this to someoneShare on LinkedIn1Share on Reddit0Share on Tumblr

Mi nombre es Jesualdo Ros Arlanzón, aunque todos me llaman Aldo. Actualmente estudio Ingeniería Industrial. Mis intereses giran entorno a la robotica, automatización y visión por computador.

  • https://www.google.com/profiles/115975057805249004909 julian colorado

    en esta parte cmake cuales serian los parametros opcionales y la ruta de codigo a la fuente

  • Aldo Ros

    Hola Julian,
    Supongo que te refieres a la parte de cmake en la que compilamos OpenCV.

    Los parámetros son:
    CMAKE_BUILD_TYPE=RELEASE # Tipo de compilación release, sin modo depuración
    CMAKE_INSTALL_PREFIX=/usr/local # Donde instalamos la biblioteca una vez compilada

    La ruta al código fuente, donde se encuentra CMakeLists.txt, es el directorio superior, por lo tanto: “..”

    Espero resolver tu duda.
    Un saludo.