Instalación de OpenCV 3.1.0 en Debian 8

Instalación de OpenCV 3.1.0 en Debian 8

En este artículo vamos a ver cómo instalar la biblioteca OpenCV 3.1.0, la última versión lanzada hace un par de meses, en Debian 8 Jessie de 64 bits. Para quienes ya hayan instalado versiones anteriores, verán que, básicamente, nada ha cambiado. Sin embargo, si han experimentado algunos errores a la hora de compilar, estos suelen deberse a la ausencia de ffmpeg en los repositorios, por lo que su instalación debe realizarse manualmente.

Instalación de los decodificadores de vídeo

Instalar dependencias

sudo apt-get update  
sudo apt-get install build-essential checkinstall libfaac-dev libjack-jackd2-dev \
libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libsdl1.2-dev \
libtheora-dev libva-dev libvorbis-dev libx11-dev libxfixes-dev \
libxvidcore-dev texi2html yasm zlib1g-dev libgstreamer0.10-0 \
libgstreamer0.10-dev gstreamer0.10-tools gstreamer0.10-plugins-base \
libgstreamer-plugins-base0.10-dev gstreamer0.10-plugins-good \
gstreamer0.10-plugins-ugly gstreamer0.10-plugins-bad gstreamer0.10-ffmpeg \
libgtk2.0-0 libgtk2.0-dev libjpeg62 libv4l-dev

Descargar, compilar e instalar la última versión de x264

wget ftp://ftp.videolan.org/pub/x264/snapshots/last_x264.tar.bz2  
tar -xf last_x264.tar.bz2  
cd x264-snapshot-*  
./configure --enable-shared --enable-pic  
make -j $(nproc)  
sudo make install

Descargar, compilar e instalar la última versión de ffmpeg

wget http://ffmpeg.org/releases/ffmpeg-3.1.1.tar.bz2  
tar -xf ffmpeg-3.1.1.tar.bz2  
cd ffmpeg-3.1.1  
./configure --enable-gpl --enable-libfaac --enable-libmp3lame \
--enable-libopencore-amrnb --enable-libopencore-amrwb \
--enable-libtheora --enable-libvorbis --enable-libxvid \
--enable-nonfree --enable-postproc --enable-libx264 \
--enable-version3 --enable-x11grab --enable-shared --enable-pic  
make -j $(nproc)  
sudo make install

Instalación de OpenCV 3.1.0

Para instalar las dependencias necesarias de OpenCV, ejecute los siguientes comandos:

sudo apt-get -y install libopencv-dev build-essential cmake git \
libgtk2.0-dev pkg-config python-dev python-numpy libdc1394-22 \
libdc1394-22-dev libjpeg-dev libpng12-dev libtiff-tools \
libjasper-dev libavcodec-dev libavformat-dev libswscale-dev \
libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev \
libv4l-dev libtbb-dev libqt4-dev libfaac-dev libmp3lame-dev \
libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev \
libvorbis-dev libxvidcore-dev x264 v4l-utils unzip libbz2-dev

Descargar OpenCV 3.1.0 (puede hacerse manualmente o mediante wget):

wget https://github.com/Itseez/opencv/archive/3.1.0.zip

Descomprimir y compilar:

unzip 3.1.0.zip  
cd opencv-3.1.0  
mkdir build && cd build  
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D WITH_TBB=ON -D WITH_V4L=ON -D WITH_QT=ON \
-D WITH_OPENGL=ON -D WITH_FFMPEG=ON ..  
# Si presenta problemas al compilar, cambie WITH_FFMPEG=ON por WITH_FFMPEG=OFF

make -j $(nproc)  
sudo make install

Para comprobar que OpenCV funciona correctamente, cree los enlaces y la caché necesarios para las bibliotecas:

sudo /bin/bash -c 'echo "/usr/local/lib" > /etc/ld.so.conf.d/opencv.conf'  
sudo ldconfig

Con esto, OpenCV 3.1.0 debería estar funcionando correctamente en Debian 8 (Jessie).

Pruebas

Vamos a comprobar que todo funciona correctamente. Diríjase a la carpeta donde se descomprimió OpenCV y compile un ejemplo:

cd opencv-3.1.0/samples/cpp/  
g++ opencv_version.cpp `pkg-config --libs --cflags opencv` -o opencv_version  
./opencv_version

Debería obtener como salida:

Welcome to OpenCV 3.1.0

Felicidades, ya tiene funcionando OpenCV 3.1.0 en Debian.

Errores comunes

A continuación se muestran dos de los errores más comunes al instalar OpenCV 3.1.0.

Error al compilar highgui

make[1]: *** [modules/highgui/CMakeFiles/opencv_highgui.dir/all] Error 2  
make: *** [all] Error 2

Generalmente se debe a la falta de las librerías de ffmpeg. Si el problema persiste, configure OpenCV sin soporte para ffmpeg:

cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D WITH_TBB=ON -D WITH_V4L=ON -D WITH_QT=ON \
-D WITH_OPENGL=ON -D WITH_FFMPEG=OFF ..

Error -lippicv al compilar ejemplos

/usr/bin/ld: no se puede encontrar -lippicv  
collect2: error: ld returned 1 exit status

Diríjase a la carpeta donde se descomprimió OpenCV y ejecute:

cd opencv-3.1.0/3rdparty/ippicv/downloads/linux-*  
tar -xvzf ippicv_linux*  
cd ippicv_lnx/lib/intel64/  
sudo cp libippicv.a /usr/local/lib/