OpenCV 3.1 sobre Qt 5 en Debian

OpenCV 3.1 sobre Qt 5 en Debian

Qt es un framework multiplataforma (Windows, Linux, macOS, Android, etc.) orientado a objetos, ampliamente utilizado para desarrollar software con interfaces gráficas de usuario, así como herramientas de línea de comandos para servidores que no requieren interfaz gráfica.

En este tutorial lo integraremos junto con OpenCV 3.1 en Debian 8. Si solo desea instalar OpenCV 3.1, le recomiendo el siguiente tutorial: Instalación de OpenCV 3.1.0 en Debian 8.


Instalación de Qt 5.7 y Qt Creator

Actualizamos el archivo sources.list agregando:

deb http://security.debian.org/ jessie/updates main
deb-src http://security.debian.org/ jessie/updates main
deb http://http.debian.net/debian/ jessie main

Actualizamos los repositorios:

apt-get update

Instalamos los paquetes de Qt y Qt Creator:

apt-get install qt5-default qtcreator

Instalación de OpenCV 3.1

Instalación de dependencias para los codificadores de vídeo

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 dependencias adicionales de OpenCV

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 y compilar OpenCV 3.1.0

wget https://github.com/Itseez/opencv/archive/3.1.0.zip
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 ..
Nota: Si presenta problemas al compilar, cambie WITH_FFMPEG=ON por WITH_FFMPEG=OFF.
make -j $(nproc)
sudo make install

Configuración de bibliotecas

Para que OpenCV funcione correctamente, cree los enlaces y la caché necesarios:

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).


Errores comunes al instalar OpenCV 3.1

Error durante la compilación

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

Generalmente se debe a la falta de librerías de FFmpeg. Si el problema persiste, ejecute:

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 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/