lunes, 6 de julio de 2015

Compilando OpenCV 3.0 en MacOS/Linux

OpenCV es una biblioteca libre de visión artificial que nos permite realizar desde un procesado simple de imágenes hasta la detección de caras y objetos.

Recientemente se ha publicado su versión 3.0 que incluye entre otras novedades:

  • Más de 1500 parches.
  • Reconocimiento de texto.
  • Integración con la librería VTK (visualizaciones 3D).
  • Uso transparente de GPU en varios algoritmos.
  • Nuevos algoritmos usados en fotografía (HDR, inpainting, edge-aware filters, superpixels, …)
  • La documentación usa ahora Doxygen.

A continuación os dejo una serie de pasos para poder utilizar todas estas funcionalidades en nuestros programas tanto en MacOS como en Linux:

Paso 0. Descargar lo que necesitamos

Para trabajar con ella en primer lugar debemos compilarla e instalarla en nuestro sistema. Para ello necesitamos descargar:

. Código fuente OpenCV para UNIX/MacOs
. Descargar e instalar CMake
. En MacOs también necesitaremos tener instalado XCode.

Paso 1. Configure y Generate

Después solo necesitamos abrir el interfaz de CMake, seleccionar el directorio donde hallamos descomprimido OpenCV, el directorio donde queramos generar los makefiles  y configurar y generar los makefiles. El interfaz de CMake nos permite también seleccionar opciones adicionales. Después pulsamos Configure y seleccionamos el compilador de UNIX (para que nos genere los makefiles) y si todo va bien CMake se encargará de buscar automáticamente las referencias a las librerías adicionales necesarias.

Si todo va bien podremos generar el proyecto pulsando Genreate. Si algo va mal tendremos que configurar a mano las rutas a las librerías que falten.


Paso 2. Make install

Así de simple, abrimos el terminal, vamos a la carpeta en la que hallamos generado nuestros makefiles y escribimos:

$ make install

Paso 3. Probarlo

Para ello escribimos un sencillo programa que muestra la captura de nuestra web cam. Para ello en primer lugar escribimos el programa:

#include "opencv2/highgui/highgui.hpp"
#include <iostream>

using namespace cv;
using namespace std;

int main(int argc, char* argv[])
{
    VideoCapture cap(0); // Abre la captura de la webcam. 
    namedWindow("Captura",CV_WINDOW_AUTOSIZE); // Crea una ventana
    while (1) {
    Mat frame;
        bool bSuccess = cap.read(frame); // realiza captura
        imshow("Captura", frame); 
  if (waitKey(30) == 27) // Lee la entrada y si pulsamos Esc sale del programa
        {
            cout << "esc key is pressed by user" << endl;
            break; 
        }
    }
    return 0;
}

Por otro lado generamos un archivo CMakeLists.txt para generar los makefiles para este programa del mismo modo que lo hicimos para compilar OpenCV:

cmake_minimum_required(VERSION 2.8)

project( TestCV )
find_package( OpenCV REQUIRED )
add_executable( TestCV cvtest.cpp )
target_link_libraries( TestCV ${OpenCV_LIBS} )


Y finalmente los generamos y compilamos usando make. El resultado obtenido será similar (o mejor) a:




No hay comentarios:

Publicar un comentario