Instalação do OpenCV 3.x no Ubuntu 20.04 LTS

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 arquivo CMakeLists.txt do 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).

Tags: OpenCV Ubuntu CMake FFmpeg C++

Publicado em 7-21 10:44