En la universidad me pideron OpenCV para hacer un par de projectos grandes de procesamiento de imágenes. Además necesité instalarlo en una pc de la escuela y en mi laptop después de formatearla varias veces.

Los pasos mostrados a continuación fueron probados con éxito en los siguientes sistemas operativos:

  • Ubuntu 12.04 con Unity
  • Ubuntu 16.04 con Unity
  • Linux Mint 18.2 con KDE
  • Linux Mint 18.3 con KDE

Los pasos mostrados a continuación fueron probados con éxito en las siguientes versiones de OpenCV:

  • OpenCV 3.0.0
  • OpenCV 3.3.1

Muchos de los pasos mostrados a continuación fueron obtenidos de la documentación oficial de OpenCV para su instalación

Instalar los paquetes requeridos

sudo apt-get install build-essential
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev

Obtener el código fuente

Se puede encontrar aqui

Compilar el código fuente

  • Descomprimir el archivo del código fuente

  • Posicionarse con la terminal en la carpeta descomprimida y crear la carpeta build
    cd ~/opencv
    mkdir build
    cd build
    
  • Instalar cmake-gui

sudo apt install cmake-qt-gui

  • Ejecutar cmake-gui

cmake-gui

  • Poner la ruta completa a la carpeta del código fuente (ejemplo: /home/user/opencv/)
  • Poner la ruta completa a la carpeta build (ejemplo: /home/user/opencv/build/)
  • Cambiar algún parámetro si se desea
  • Click: Configure
  • Click: Generate

  • Compilar con make usando varios hilos (va a tardar, la terminal sigue en la carpeta build)
    make -j7
    

    tal vez pida hacerlo como super usuario

    sudo make -j7
    
  • Instalar mediante
    sudo make install
    

    (la terminal sigue en la carpeta build)

Solución a un par de problemas

Solución para loading shared libraries

Si se complia sin problemas pero al ejecutarse se muestra un mensaje como

error while loading shared libraries: libopencv_highgui.so.3.3: cannot open shared object file: No such file or directory

A veces cambia la versión y nombre de libopencv, por ejemplo libopencv_contours.so.2.4

Para solucionarlo se debe crear en la ubicación:

/etc/ld.so.conf.d

El archivo opencv.conf

Y escribir en él la ruta a la carpeta en dónde se encuentra el archivo libopencv_core.so.3.3

Dependiendo de la versión de OpenCV que se instale, solicte, por ejemplo el archivo libopencv_core.so.2.4

El archivo se puede encontrar en alguna de las siguientes carpetas:

/usr/local/lib/
/usr/local/localx86_64_linux_lib/lib/

También se puede buscar el archivo libopencv_core.so.3.0 con la orden de la terminal

locate libopencv_core.so.3.0

Y por último refrescar las rutas a las librerías

sudo ldconfig -v

Solución para archivos truncados

Puede aparecer un error de fichero truncado cuando se deja a medias el sudo make -j7 como este:

make[1]: *** [modules/imgproc/CMakeFiles/opencv_test_imgproc.dir/all] Error 2
[ 79%] Built target opencv_calib3d
CMakeFiles/opencv_test_core.dir/test/test_ds.cpp.o: no se reconoce el fichero: Fichero truncado
collect2: error: ld returned 1 exit status
modules/core/CMakeFiles/opencv_test_core.dir/build.make:882: fallo en las instrucciones para el objetivo 'bin/opencv_test_core'
make[2]: *** [bin/opencv_test_core] Error 1
CMakeFiles/Makefile2:1699: fallo en las instrucciones para el objetivo 'modules/core/CMakeFiles/opencv_test_core.dir/all'
make[1]: *** [modules/core/CMakeFiles/opencv_test_core.dir/all] Error 2
Makefile:160: fallo en las instrucciones para el objetivo 'all'

Para solucionarlo se debe abrir el cmake-gui y seguir los pasos para instalar, pero en las opciones se debe desactivar esta opcion de cmake:

-DENABLE_PRECOMPILED_HEADERS=OFF

y seguir los pasos de instación normalmente.