Ubuntu 20.04 compila Opencv 4.11, etapas detalhadas (com fotos) e resolução de erros, minha viagem ao poço~

Ambiente do computador:

1, Ubuntu 20.04

2, opencv 4.11

3、opencv_contrilb 4.11

1. Endereço OpenCV GitHub

opencv github

opencv_contrilb github

Ambas as versões devem ser iguais

2. As dependências básicas que precisam ser preparadas antes da compilação

1. Dependência básica

sudo apt install -y cmake make
sudo apt install -y build-essential

sudo apt install -y libgtk2.0-dev
sudo apt install -y libavcodec-dev
sudo apt install -y libavformat-dev
sudo apt install -y libjpeg-dev
sudo apt install -y libtiff-dev
sudo apt install -y libswscale-dev
sudo apt install -y libpng-dev

# 添加这个才能找到 libjasper-dev 这个包依赖
sudo add-apt-repository "deb <http://security.ubuntu.com/ubuntu> xenial-security main"

sudo apt update
sudo apt install  -y libjasper-dev

sudo apt install -y freeglut3-dev
sudo apt install -y libgl1-mesa-dev

sudo apt install -y pkg-config

Não vou explicar as dependências uma a uma, a maioria delas são sobre análise de imagens e dependências de processamento de imagens.

2. dependências relacionadas ao gstreamer

sudo apt update
sudo apt install -y libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libgstreamer-plugins-bad1.0-dev libgstreamer-plugins-good1.0-dev
sudo apt install -y gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly
sudo apt install -y gstreamer1.0-tools gstreamer1.0-libav
sudo apt install -y gstreamer1.0-doc gstreamer1.0-x gstreamer1.0-alsa gstreamer1.0-gl gstreamer1.0-gtk3 gstreamer1.0-qt5 gstreamer1.0-pulseaudio

A dependência aqui é que eu preciso usar as dependências relacionadas ao gstreamer antes de fazer o download, mas se você não precisar usá-lo, não precisará fazer o download da dependência aqui. Ajuste os parâmetros do comando cmake subsequente de acordo

Suporte 3.GTK (biblioteca de interface gráfica)

*# 安装gtk2支持*
sudo apt-get install libgtk2.0-dev
*# 安装gtk3支持*
sudo apt-get install libgtk-3-dev

3. Compile o código opencv

1、cd opencv-4.1.1

imagem.png

2、mkdir build

3、cd build

4. Execute o comando cmake no diretório de compilação. O comando cmake específico e os parâmetros relacionados são os seguintes:

sudo cmake -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX=/usr/local \ -D OPENCV_GENERATE_PKGCONFIG=ON \ -D BUILD_EXAMPLES=OFF \ -D INSTALL_PYTHON_EXAMPLES=OFF \ -D INSTALL_C_EXAMPLES=OFF \ -D PYTHON_EXECUTABLE=$(which python2) \ -D BUILD_opencv_python2=OFF \ -D PYTHON3_EXECUTABLE=$(which python3) \ -D PYTHON3_INCLUDE_DIR=$(python3 -c "from distutils.sysconfig import get_python_inc; print(get_python_inc())") \ -D PYTHON3_PACKAGES_PATH=$(python3 -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())") \ -D OPENCV_EXTRA_MODULES_PATH=/home/nzc/Desktop/project/opencv4/opencv_contrib-4.1.1/modules/ \ -D WITH_GSTREAMER=ON \ ..

cmakeOs parâmetros neste comando funcionam da seguinte forma:

  • D CMAKE_BUILD_TYPE=RELEASE: especifique o tipo de compilação como RELEASE, que habilitará a otimização e desabilitará as informações de depuração.

  • D CMAKE_INSTALL_PREFIX=/usr/local: Especifique o diretório de instalação como /usr/local, isso instalará o OpenCV no nível do sistema.

  • D OPENCV_GENERATE_PKGCONFIG=ON: Gere .pcarquivos para que outros programas possam usar facilmente a biblioteca OpenCV.

  • D BUILD_EXAMPLES=OFF: Desativa a compilação de programas de exemplo OpenCV.

  • D INSTALL_PYTHON_EXAMPLES=OFF: Desativa a instalação de programas de amostra do Python.

  • D INSTALL_C_EXAMPLES=OFF: desativa a instalação de programas de amostra C.

  • D PYTHON_EXECUTABLE=$(which python2): Especifica o caminho para o interpretador Python 2.

  • D BUILD_opencv_python2=OFF: Desativa a compilação das ligações OpenCV para Python 2.

  • D PYTHON3_EXECUTABLE=$(which python3): Especifica o caminho para o interpretador Python 3.

  • D PYTHON3_INCLUDE_DIR=$(python3 -c "from distutils.sysconfig import get_python_inc; print(get_python_inc())"): especifica o caminho do arquivo de cabeçalho para Python 3.

  • D PYTHON3_PACKAGES_PATH=$(python3 -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())"): especifica o caminho do pacote para Python 3.

  • D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules/: Especifica o caminho para os módulos extras do OpenCV. Ele precisa ser opencv_contribbaixado , como especificar a localização específica do computador local. Aqui preencho o caminho absoluto da minha máquina.

imagem.png

  • D WITH_GSTREAMER=ON: Ative o suporte do GStreamer para que o OpenCV possa ler e gravar fluxos do GStreamer.

Esses parâmetros podem ser ajustados de acordo com suas necessidades, por exemplo, se você não precisar de suporte a Python, poderá desativar os parâmetros relevantes.

Link de referência do artigo:

developer.ridgerun.com/wiki/index.…

5、cmake 结果

imagem.png

反正此处的结果我建议是截图保存一下,方便后面用到~

四、make & make install ,此处有坑

1、sudo make -j8

执行完上述过程后,在原来的目录上执行 sudo make -j8,后面这个 -j8 参数,一般是指定make任务过程的处理器个数,一般编译的快,5分钟就搞定啦~ (虚拟机贼慢把慢,当然也是我分配的处理器少)此处过程有坑,后续慢慢道来吧~

编译过程中一般来说只需要注意 error 的日志输出

2、出现错误1,缺少 boostdesc_bgm.i 文件

imagem.png

此处问题大都出现在 make 到 80%-85% 时所出现的问题,不同的版本的进度条可能会稍微有一点点的变化:

在CSDN找到一位博主的解决方案:blog.csdn.net/AlexWang30/…

笔者在网上查找一番后,发现网上大都给出了解决方案,无非就是将以下文件:

boostdesc_bgm.i boostdesc_bgm_bi.i boostdesc_bgm_hd.i boostdesc_lbgm.i boostdesc_binboost_064.i boostdesc_binboost_128.i boostdesc_binboost_256.i vgg_generated_120.i vgg_generated_64.i vgg_generated_80.i vgg_generated_48.i 拷贝到opencv_contrib/modules/xfeatures2d/src/目录下,而且网上直接可以用的资源并不多。

作者也给出啦具体的百度云资源~

百度云链接:pan.baidu.com/s/1BeYF8kqE…

提取码:e1wc

咱就是说~ 好人一生平安,一胎八个~


image.png

再次回到 build,重新执行 make 命令,你以为会成功是吧,做梦吧,我也想成功勒

3、出现错误2,缺少 features2d/test/test_detectors_regression.impl.hpp

image.png

出现了这个错误,但是这个错误,还能在 github 中的 issue 中找到,并且 issue 也谈到啦上面的那个错误

//home/nzc/Desktop/project/opencv4/opencv_contrib-4.1.1/modules/xfeatures2d/test/test_features2d.cpp:51:10: fatal error: features2d/test/test_detectors_regression.impl.hpp: 没有那个文件或目录
   51 | #include "features2d/test/test_detectors_regression.impl.hpp"
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
make[2]: *** [modules/xfeatures2d/CMakeFiles/opencv_test_xfeatures2d.dir/build.make:76:modules/xfeatures2d/CMakeFiles/opencv_test_xfeatures2d.dir/test/test_features2d.cpp.o] 错误 1
make[1]: *** [CMakeFiles/Makefile2:10363:modules/xfeatures2d/CMakeFiles/opencv_test_xfeatures2d.dir/all] 错误 2
make: *** [Makefile:163:all] 错误 2

最开始是看到 issue #15818 :Ubuntu 16.04安装opencv过程中,输入make命令后报错。opencv /opencv#15818

然后又指向啦 issue #1950:ubuntu build make error #1950

前行者亦是躺坑者~~

我在issue中找了个最简单的,好像能解决问题的方式来尝试啦一下,我是成功了,但其他的,我也很难说。

image.png

cp -r ~/opencv/modules/features2d ~/opencv/build 请根据自己目录进行合适的修改

我的目录结构如下图,执行结果也如下图:

image.png

然后再次重新执行 sudo make -j8

4、sudo make successful

最后的日志输出,出现类似下图的结果则表示 build 成功啦

image.png

5、sudo make install

出现下图就是成功啦 image.png

默认位置安装,则会安装到系统如下目录:

  • /usr/local/bin
  • /usr/local/lib
  • /usr/local/share

bin下的可执行文件:

image.png

lib是库文件,主要是以libopencv开头的so文件、文件夹:pkgconfig、python2.x、python3.x(pkgconfig里存放的是opencv.pc);share里就两个文件夹:OpenCV和licenses 安装好还需要进行配置,见后文。

五、使用前的准备和检查是否安装成功

5.1、动态链接

重新載入動態連結,

sudo ldconfig -v

image.png

这里的 -v 参数就是将相关信息输出到屏幕上,不想看可以直接去掉 -v 参数。

5.2、检查版本信息

1、使用 pkg-config 查詢已安裝的 opencv 版本

pkg-config opencv4 --modversion

opencv4.1.1

image.png

2、使用 opencv_version 指令查詢已安裝 opencv 的版本。

opencv_version4.1.1

image.png

这个命令我也不知道咋,其他两个都是正常的,这个看到的就是 4.2.0 版本

3、使用python3 命令

import cv2 as cv

print(cv.__version__)

A versão de saída do opencv está correta. Se não puder ser usado normalmente, por exemplo, o módulo cv2 não pode ser encontrado, então você precisa configurar a variável de ambiente

5.3, configurar variáveis ​​de ambiente

Às vezes, a compilação é bem-sucedida, o c++ Demo também pode ser executado e o opencv pode ser chamado normalmente, mas ao entrar no ambiente python, o import cv2 falhará ao encontrar o pacote ou outros problemas. Então você pode tentar configurar as variáveis ​​de ambiente. Deixe o python encontrar o pacote correspondente.

Quando compilamos, usamos o caminho de instalação padrão, então o caminho do módulo cv2 gerado é:

image.png

Meu computador é: /usr/lib/python3/dist-packages/, precisamos adicionar este caminho na variável de ambiente PYTHONPATH, para que o cv2 possa ser encontrado ao importar no ambiente python

# 新增PYTHONPATH环境变量
sudo vim ~/.bashrc

export PYTHONPATH**=**$PYTHONPATH:/usr/lib/python3/dist-packages

source ~/.bashrc

Se você escolher o caminho de instalação padrão como eu, basta copiá-lo ~ Se você personalizar o caminho de instalação, precisará ajustá-lo de acordo.

Posfácio

De qualquer forma, é isso por enquanto. Neste fim de semana, joguei com sistemas duplos em casa e simplesmente criei um ambiente de desenvolvimento. Devo produzir alguns artigos básicos semelhantes mais tarde.

Também é minha viagem pisar no caroço desse pratinho~


Para mim, abril e maio deste ano não foram muito tranquilos, podendo-se até dizer que foram turbulentos. Não foi até recentemente que comecei a ler novamente, comecei a ser ativo no Nuggets novamente e comecei a codificar novamente ~

Foi também hoje que me ouvi digitando o som nítido e coerente do teclado novamente.Naquele momento, parecia que de repente me vi que estava falando sério sobre blogs no passado .

A primeira semana de junho já passou, 618 está chegando e metade de 2023 passou em silêncio .

Faça uma pergunta não relacionada, você está satisfeito consigo mesmo este ano ~

Acho que você gosta

Origin juejin.im/post/7240740177449549879
Recomendado
Clasificación