Preparando o Ambiente para o OpenCV
A instalação do OpenCV 3.x no Ubuntu 20.04 LTS envolve a configuração de ferramentas de compilação, a instalação de dependências de biblioteca e a compilação do código-fonte. Este guia detalha o processo passo a passo.
1. Instalação do CMake e Dependências Essenciais
O CMake é uma ferramenta essencial para configurar o projeto OpenCV antes da compilação. Além disso, diversas bibliotecas de desenvolvimento são necessárias para garantir a funcionalidade completa do OpenCV, incluindo suporte a interfaces gráficas (GTK+), codecs de vídeo e manipulação de formatos de imagem.
Execute os seguintes comandos em um terminal para atualizar os pacotes e instalar o CMake junto com as dependências:
sudo apt update
sudo apt install -y cmake build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg-dev libswscale-dev libtiff5-dev pkg-config
Este comando instalará o CMake, um conjunto de ferramentas de construção essenciais (como gcc e g++), bibliotecas de desenvolvimento para GTK2, codecs de áudio/vídeo (FFmpeg), JPEG, TIFF e o pkg-config, que auxilia na localização de bibliotecas instaladas.
2. Obtenção do Código-Fonte do OpenCV 3.x
Para obter o OpenCV 3.x, você deve baixar o código-fonte diretamente do site oficial. Para as versões mais antigas como a 3.x (por exemplo, 3.2.0), visite a página de releases do OpenCV:
Acesse: https://opencv.org/releases/
Na página, localize a versão desejada (como 3.2.0) e faça o download do pacote "Sources". Após o download, descompacte o arquivo (por exemplo, opencv-3.2.0.zip) em um diretório de sua escolha (ex: ~/Downloads/opencv-3.2.0).
Compilação e Instalação do OpenCV
1. Configuração do Projeto com CMake
Após descompactar o código-fonte, navegue até o diretório raiz do OpenCV (ex: opencv-3.2.0). Dentro dele, crie uma subpasta chamada build e, em seguida, entre nela. Esta pasta será utilizada para armazenar os arquivos gerados pelo CMake e os objetos de compilação.
cd ~/Downloads/opencv-3.2.0 # Ajuste este caminho para o seu diretório de extração
mkdir build
cd build
Agora, configure o projeto com o CMake. Este passo irá gerar os Makefiles necessários para compilar o OpenCV.
sudo cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
Os parâmetros utilizados significam:
CMAKE_BUILD_TYPE=Release: Configura a compilação para o modo de "Release", otimizando o desempenho.CMAKE_INSTALL_PREFIX=/usr/local: Define o diretório onde as bibliotecas, cabeçalhos e outros arquivos do OpenCV serão instalados no sistema...: Indica ao CMake que o arquivoCMakeLists.txtdo projeto OpenCV está no diretório pai.
2. Compilação do Código-Fonte
Inicie o processo de compilação. Este passo pode levar um tempo considerável, dependendo das especificações do seu hardware.
sudo make -j$(nproc)
O argumento -j$(nproc) instrui o make a utilizar todos os núcleos de CPU disponíveis no sistema para acelerar a compilação. Alternativamente, você pode especificar um número fixo de processos, como -j8.
Resolução de Erros Comuns Durante a Compilação
Ao compilar versões mais antigas do OpenCV em sistemas Linux mais recentes, como o Ubuntu 20.04, é comum encontrar problemas de compatibilidade devido a mudanças nas APIs de bibliotecas de terceiros (como FFmpeg ou Python).
Problema 1: Definições de Macro Ausentes no cap_ffmpeg_impl.hpp
Este erro geralmente ocorre devido a alterações na API do FFmpeg. Para corrigi-lo, edite o arquivo opencv-3.2.0/modules/videoio/src/cap_ffmpeg_impl.hpp. Adicione as seguintes definições de macro no início do arquivo (após quaisquer outras diretivas #define ou #include):
#define AV_CODEC_FLAG_GLOBAL_HEADER (1 << 22)
#define CODEC_FLAG_GLOBAL_HEADER AV_CODEC_FLAG_GLOBAL_HEADER
#define AVFMT_RAWPICTURE 0x0020
Salve o arquivo após fazer as alterações.
Problema 2: Conversão de Tipo Inválida em cv2.cpp (Bindings Python)
Se você encontrar um erro relacionado à conversão de tipo de const char* para char* no arquivo opencv-3.2.0/modules/python/src2/cv2.cpp, isso é devido a uma verificação de tipo mais rigorosa em compiladores modernos.
Abra o arquivo opencv-3.2.0/modules/python/src2/cv2.cpp e localize a linha que se assemelha a:
char* str = PyString_AsString(obj);
Modifique-a para incluir um cast explícito para char*:
char* str = (char *)PyString_AsString(obj);
Salve o arquivo modificado.
Após aplicar qualquer uma dessas correções, é aconselhável limpar o diretório build e refazer o processo de CMake e Make. Você pode remover o diretório build e recriá-lo, ou executar make clean (se os makefiles já foram gerados) e depois make -j$(nproc) novamente.
3. Instalação das Bibliotecas do OpenCV
Com a compilação concluída sem erros, você pode prosseguir com a instalação das bibliotecas do OpenCV no sistema.
sudo make install
Configuração do Ambiente de Execução
Para que o sistema operacional e outros programas possam localizar e utilizar as bibliotecas do OpenCV, é necessário configurar algumas variáveis de ambiente.
1. Atualização do Caminho da Biblioteca Dinâmica
É preciso informar ao sistema onde encontrar as bibliotecas dinâmicas do OpenCV. Edite o arquivo de configuração de bibliotecas dinâmicas do sistema:
sudo gedit /etc/ld.so.conf
Adicione a seguinte linha ao final do arquivo:
include /usr/local/lib
Salve e feche o editor. Em seguida, atualize o cache do carregador de bibliotecas dinâmicas:
sudo ldconfig
2. Configuração do PKG_CONFIG_PATH
Para permitir que ferramentas como o pkg-config encontrem os arquivos .pc do OpenCV, adicione o caminho correto à variável de ambiente PKG_CONFIG_PATH.
sudo gedit /etc/bash.bashrc
Adicione as seguintes linhas ao final do arquivo:
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
Salve e feche o editor. Para aplicar as alterações na sua sessão atual do terminal, execute:
source /etc/bash.bashrc
Verificação da Instalação
Para confirmar se o OpenCV foi instalado corretamente e se as configurações de ambiente estão funcionando, utilize o comando pkg-config:
pkg-config opencv --modversion
Se a instalação foi bem-sucedida, o terminal exibirá o número da versão do OpenCV (por exemplo, 3.2.0).