B. Instalação da biblioteca OpenCV

B.1. Instalação da biblioteca OpenCV no Debian Squeeze

Para acompanhar o desenvolvimento do programa de controle do Pluviômetro Livre usando Visão Computacional com a biblioteca OpenCV resolvi providenciar a instalação dessa biblioteca no meu laptop com o Debian Squeeze.

Usei como referência os tutoriais Installing OpenCV on Debian Linux e Instalando a biblioteca OpenCV.

Instalei inicialmente um monte de pacotes:


apt-get install cmake
apt-get install build-essential
apt-get install pkg-config
apt-get install libgtk2.0-dev 
apt-get install python-opencv python-dev python-numpy
apt-get install libpng12-0 libpng12-dev libpng++-dev libpng3 libpnglite-dev libpngwriter0-dev libpngwriter0c2 zlib1g-dbg
zlib1g zlib1g-dev pngtools libjasper-dev libjasper-runtime libjasper1 libjpeg8 libjpeg8-dbg libjpeg62 libjpeg62-dev 
libjpeg-progs libtiff4-dev libtiff4 libtiffxx0c2 libtiff-tools ffmpeg libavcodec-dev libavcodec52 libavformat52 
libavformat-dev libswscale0 libswscale-dev openexr libopenexr6 libopenexr-dev

apt-get install libgstreamer0.10-0-dbg libgstreamer0.10-0 libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev 
libxine1-ffmpeg libxine-dev libxine1-bin libunicap2 libunicap2-dev libucil2 libucil2-dev libdc1394-22-dev 
libdc1394-22 libdc1394-utils libv4l-0 libv4l-dev
apt-get install libqt4-dev

Mas na hora de instalar a biblioteca OpenCV surgiu a primeira dúvida pois o tutorial indicava a versão 2.4.2 mas no repositório só estavam disponíveis (da série 2.4) as versões 2.4.9, 2.4.10 e 2.4.11, e a última versão já estava na 3.0.0.

Como eu instalar em uma distribuição já antiga eu tinha o receio de instalar versões atualizadas da biblioteca OpenCV e ter problemas de incompatibilidade com as bibliotecas disponíveis no Debian 6.0.

Decidi testar primeiro a versão 2.4.11 mas como eu previa encontrei problemas logo na primeira etapa ao rodar o programa cmake para criar os arquivos de configuração para compilação:

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D BUILD_ZLIB=ON -D WITH_V4L=ON -D WITH_GSTREAMER=ON -D WITH_OPENEXR=ON -D WITH_UNICAP=ON -D BUILD_PYTHON_SUPPORT=ON -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON ..

Não consegui resolver a pendência e resolvi testar a versão anterior (2.4.10) e dessa vez o cmake rodou até o final mas na hora de compilar (com o comando make) apareceu um erro antes da metada da compilação. Então testei a versão 2.4.9 e foi possível compilar até ~60%, quando surgiu o seguinte erro:



[ 63%] Generating opencl_kernels.cpp, opencl_kernels.hpp
CMake Error at /home/markos/Python/OpenCV/opencv-2.4.9/cmake/cl2cpp.cmake:50 (string):
  string does not recognize sub-command MD5

make[2]: ** [modules/ocl/opencl_kernels.cpp] Erro 1
make[1]: ** [modules/ocl/CMakeFiles/opencv_ocl.dir/all] Erro 2
make: ** [all] Erro 2

Pesquisei pela mensagem string does not recognize sub-command MD5 e encontrei uma sugestão no site https://wuliangx.wordpress.com/2014/10/29/compiling-your-first-c-program-for-opencv/ para apenas comentar a linha

string(MD5 hash "${lines}")

do arquivo /home/markos/Python/OpenCV/opencv-2.4.9/cmake/cl2cpp.cmake.

Fiz a alteração e rodei novamente o cmake e em seguida o make -j2 e a compilação rodou sem problemas.

Instalei (como root) com o comando make install, criei o arquivo /etc/ld.so.conf.d/opencv.conf com a linha /usr/local/lib e rodei (como root) o comando ldconfig -v.

Fiz os testes com os exemplos disponíveis no diretório ~/opencv/OpenCV-2.4.3/samples/c e rodaram sem problemas. Mas quando tentei chamar o módulo cv2 com o Python aparecia o erro:


>>> import cv2.cv as cv
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named cv2.cv

Tentando resolver o problema resolvi apagar todo o diretório e rodar novamente o comando cmake incluindo alguns parâmetros para o Python seguindo a sugestão: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=709181 e recompilar tudo novamente.

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON -D WITH_QT=ON -D WITH_OPENGL=ON -D PYTHON_INCLUDE_DIR=/usr/include/python2.6 -D PYTHON_LIBRARY=/usr/lib/python2.6/config/libpython2.6.so ..

Mas o problema persistia (ImportError: No module named cv2.cv).:^(

Mas observando alguns códigos Python percebi que alguns mais antigos era importado apenas o módulo cv com o comando import cv. Resolvi fazer essa modificação e pude verificar que os códigos funcionaram.

Então passei a usar apenas o comando import cv.