domingo, 26 de julio de 2015

Compilar e instalar Orfeo Toolbox 5.0 en Ubuntu


Orfeo Toolbox (OTB) es una biblioteca para el procesamiento de imágenes de teledetección (por ejemplo imágenes por satélite) desarrollada por el Centro Nacional de Estudios Espaciales Frances (CNES).


Antes de empezar debemos instalar cmake (y opcionalmente cmake-gui), así como las librerias zlib, boost, curl y QT4:

sudo apt-get install cmake cmake-gui zlib1g-dev libboost-all-dev libcurl4-openssl-dev libqt4-dev libqt4-gui g++ libtinyxml2.6.0

Ahora descargamos y descomprimimos los sources de la última versión (5.0.0) de OTB: http://sourceforge.net/projects/orfeo-toolbox/files/OTB-5.0.0.tgz/download

Orfeo requiere muchas dependencias para funcionar (GDAL, OSSIM, etc) pero por suerte para facilitarnos la vida el paquete incluye un modo de compilación llamado Super Build. Para ello tan solo tenemos que entrar en la carpeta Super Build y configurar y generar los makefiles que nos permitirán compilar e instalar la librería para lo que escribimos:

cmake -G "Unix Makefiles"

Después debido a que han movido el repositorio de MuParser y aun no han actualizado (en la versión 5.0.0) los makefiles, debemos editar el archivo ./SuperBuild/CMake/External_muparser.cmake, cambiando las línea:

URL "http://downloads.sourceforge.net/project/muparser/muparser/Version%202.2.3/muparser_v2_2_3.zip"
URL_MD5 9de40ec1dab5bd2787ee344fce5846ad


por

URL "https://www.orfeo-toolbox.org/packages/muparser_v2_2_4.zip"
URL_MD5 ab5d86af1c75e3946314e76e6018f78d


Y compilamos e instalamos

sudo make

Esperamos un buen rato y listo. En el próximo post cómo crear el primer programa con OTB.

jueves, 23 de julio de 2015

Desinstalar todos los paquetes de brew

De vez en cuando hay que hacer limpieza de los paquetes instalados con Homebrew. Para ello solo hay que escribir:

$ brew remove --force $(brew list)

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: