Devido ao uso recente da extração de recursos SIFT e SURF no OpenCV3, desde que o OpenCV2 foi atualizado para o OpenCV3, esses algoritmos como SIFT e SURF foram removidos da biblioteca padrão do projeto opencv e colocados na biblioteca do projeto chamada opencv_contrib. Portanto, você precisa baixar manualmente o código-fonte de opencv e opencv_contrib e, em seguida, juntar os dois códigos-fonte para compilar e instalar manualmente.
Como meu computador está executando o ubuntu18.04 em uma máquina virtual VMware, e o ROS-melodic está instalado no ubuntu18.04, a versão opencv-3.2.0 é instalada por padrão após a instalação do ROS-melodic. Portanto, para ser consistente com a versão opencv-3.2.0 que vem com o ROS-melodic, baixei o código-fonte opencv-3.2.0 e opencv_contrib-3.2.0, compilado e instalado manualmente, para cobrir o built-in ROS-melodic A versão opencv-3.2.0. Abaixo listei meu ambiente:
- máquina virtual VMware
- grátis18.04
- opencv-3.2.0
- opencv_contrib-3.2.0
1. Baixe o código-fonte opencv-3.2.0 e opencv_contrib-3.2.0
Basta ir ao github para fazer o download, o endereço de download é o seguinte:
- Endereço de download do Opencv-3.2.0: https://github.com/opencv/opencv/tree/3.2.0
- endereço de download opencv_contrib-3.2.0: https://github.com/opencv/opencv_contrib/tree/3.2.0
Após o download, descompacte esses dois arquivos na mesma pasta ao mesmo tempo, descompacto em uma pasta como opencv_install, conforme a figura abaixo.
2. Instale as dependências relacionadas
Antes de compilar e instalar o código-fonte opencv, você precisa primeiro instalar a biblioteca de dependências relevante. O comando de instalação é o seguinte:
sudo apt-get install build-essential
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
Um erro será relatado quando o comando acima for executado. O erro diz que o libjaster-dev não pode ser instalado. A solução é a seguinte:
sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"
sudo apt update
sudo apt install libjasper1 libjasper-dev
3. Configure os parâmetros de compilação opencv com a ferramenta cmake-gui
(1) Instale a ferramenta cmake-gui
Antes de compilar oficialmente o código-fonte do opencv, você precisa definir os parâmetros do CMake no opencv. É recomendável usar a ferramenta cmake-gui para configurar. Primeiro instale a ferramenta cmake-gui, o seguinte comando:
sudo apt-get install cmake-gui
(2) Defina os parâmetros do cmake
Abra o terminal e digite o seguinte comando para iniciar a ferramenta cmake-gui:
cmake-gui
Na interface aberta, defina o caminho do opencv-3.2.0 na coluna de where is the source code, e o path de opencv-3.2.0/build na coluna de where to build os binários, conforme a figura abaixo.
Em seguida, clique no botão Configurar para configurar. Um erro será relatado durante o processo de configuração. O erro diz que há falta de vgg_generated_48.i. A solução é baixar diretamente o arquivo vgg_generated_48.i da Internet. O endereço de download é o seguinte:
https://download.csdn.net/download/u013085286/10309843
Depois de baixar vgg_generated_48.i, copie este arquivo para o caminho indicado no relatório de erro. Pegue meu caminho como exemplo, copie-o com o seguinte comando:
cp vgg_generated_48.i /home/ubuntu1804/Downloads/opencv_install/opencv_contrib-3.2.0/modules/xfeatures2d/cmake/.download/e8d0dcd54d1bcfdc29203d011a797179/vgg_generated_48.i
O e8d0dcd54d1bcfdc29203d011a797179 no caminho no comando acima deve prevalecer de acordo com sua mensagem de erro real. Para erros semelhantes de falta desses arquivos, vá para a Internet para baixar os arquivos correspondentes e resolva-os da mesma maneira. Depois de concluir esses arquivos, clique em Configurar novamente
(3) Defina os parâmetros de compilação do cmake
Na interface, defina os valores dos seguintes parâmetros. Os parâmetros e valores específicos são os seguintes: O valor do parâmetro CMAKE_BUILD_TYPE é Release, conforme mostrado na figura abaixo.
O valor do parâmetro OPENCV_EXTRA_MODULES_PATH é /home/ubuntu1804/Downloads/opencv_contrib-3.2.0/modules, e as primeiras pastas deste caminho são substituídas pelo seu caminho real, conforme mostrado na figura abaixo.
O parâmetro CMAKE_INSTALL_PREFIX assume o valor /usr/local, conforme a figura abaixo.
É necessário mencionar aqui que o valor do parâmetro ENABLE_PRECOMPILED_HEADERS precisa ser definido como OFF. Se este parâmetro não estiver desativado, um erro será relatado posteriormente ao compilar /usr/include/c++/7/cstdlib:75:15:erro fatal:stdlib.h:No such file or direct.
Depois que os parâmetros de compilação acima forem definidos, você pode clicar no botão Gerar para gerar o makefile.
4. Compile e instale o opencv
Mude para o diretório opencv-3.2.0/build, compile e instale com make e make install.
cd ~/Downloads/opencv_install/opencv-3.2.0/build/
make
sudo make install
Ao executar o comando acima e ver 100%, parabéns! Instalação bem sucedida!