ARM-Linux 开发板下安装编译 OpenCV 和 Dlib

安装 OpenCV 和 Dlib 不像在 x86 平台下那样简单,用一句命令就可以自动安装完。而在 ARM 平台中许多软件都需要自行下载编译,且还有许多问题,本篇文章就是记录在 ARM 平台下载 OpenCV 踩过的坑。

硬件环境:

RK3568 + Ubuntu20.04。

安装 OpenCV

1、安装 OpenCV 需要的依赖库。

先添加源,以防安装 libjasper-dev 依赖包会有出现问题。

sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"
sudo add-apt-repository "deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ xenial main multiverse restricted universe"

sudo apt update

安装需要的依赖库。

sudo apt-get install build-essential cmake git libgtk2.0-dev pkg-config \
                     libavcodec-dev libavformat-dev libswscale-dev libjpeg-dev 
                     libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev \
                     libeigen3-dev libtheora-dev libvorbis-dev libxvidcore-dev \
                     libx264-dev libgtk-3-dev libtesseract-dev libopenblas-dev \
                     liblapack-dev libatlas-base-dev gfortran libprotobuf-dev \
                     protobuf-compiler libgoogle-glog-dev libgflags-dev libhdf5-dev \
                     liblmdb-dev libsnappy-dev python3-dev python3-numpy python3-pip

修复软件包依赖问题。

sudo apt install -f

 如果在添加源后安装 libjasper-dev 包还是出现了问题,就在输入 apt install -f 后再重新安装。

2、下载源码

除了下载 OpenCV 源码,还需要下载 opencv_contrib 源码,里面提供了许多额外的功能和工具,用于扩展 OpenCV 库的功能。这个模块中包含了一些实验性质的特征、算法、工具和模块,这些功能通常不包含在核心的 OpenCV 库中。

OpenCV

opencv_contrib

OpenCV 和 opencv_contrib 源码的版本需要一致,不然可能会出现问题。如果需要在 Python 环境中使用 OpenCV,还需要看一下 Python 版本和 OpenCV 版本的对应关系。作者使用的 Python 版本是 3.8.9,下载的 OpenCV 和 opencv_contrib 的版本是 4.2.0,选择合适的版本下载。

3、编译安装

将 OpenCV 和 opencv_contrib 的源码拷贝到开发板中,任意位置都行,然后使用命令解压压缩包。

进入opencv-4.2.0 目录下,并且创建一个 build 目录,然后进去 build 目录下。

#配置编译选项
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_EXTRA_MODULES_PATH=/home/topeet/OpenCV/opencv_contrib-4.2.0/modules -D BUILD_opencv_python3=ON -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 WITH_GTK_2_X=ON -D WITH_OPENGL=ON ..

#编译
​​​​​​​make -j$(nproc)

#安装
make install

配置编译选项记得改一下 opencv_contrib  的路径。因为是在开发板上编译,所以过程有点久,然后就是编译过程中会出现编译失败,主要就是下面这两个问题,解决后重新编译即可。

安装 OpenCV 时提示缺少 boostdesc_bgm.i 文件的问题解决方案:

这个报错就是 opencv_contrib 中缺少一些文件,按照下面这位博主的方法解决。

安装OpenCV时提示缺少boostdesc_bgm.i文件的问题解决方案

安装 OpenCV 时提示缺少 test_detectors_regression.imp.hpp 文件的问题解决方案:

这个报错同样也是  opencv_contrib 中缺少一些文件,解决方法是:

opencv-4.2.0/modules/features2d/test/ 目录下面的 5 个文件

拷贝到 opencv_contrib-4.2.0/modules/xfeatures2d/test/ 目录下

test_descriptors_invariance.impl.hpp
test_descriptors_regression.impl.hpp
test_detectors_invariance.impl.hpp
test_detectors_regression.impl.hpp
test_invariance_utils.hpp

 同时,修改 opencv_contrib-4.2.0/modules/xfeatures2d/test/test_features2d.cpp 文件里头文件的路径。

#include "features2d/test/test_detectors_regression.impl.hpp"
#include "features2d/test/test_descriptors_regression.impl.hpp"

修改成下面这样。 

修改 opencv_contrib-4.2.0/modules/xfeatures2d/test/test_rotation_and_scale_invariance.cpp 文件里头文件的路径。 

#include "features2d/test/test_detectors_invariance.impl.hpp"
#include "features2d/test/test_descriptors_invariance.impl.hpp"

修改成下面这样。 

 4、环境配置

输入以下命令进行环境配置。

#进入配置文件
sudo vim /etc/ld.so.conf

#在配置文件末尾另起一行加上
/usr/local/lib

#更新环境配置
sudo /sbin/ldconfig

安装 Dlib

1、安装 bootst 

sudo apt-get install libboost-all-dev

2、下载源码

从 GitHub 上下载 Dlib 源码,拷贝到开发板上进行解压。

3、编译安装

进入Dlib 目录下,并且创建一个 build 目录,然后进去 build 目录下。

#编译
sudo cmake .. -DDLIB_USE_CUDA=0 -DUSE_AVX_INSTRUCTIONS=1
cmake --build .

#安装
cd ..  //返回上一级目录
sudo python setup.py install --no DLIB_USE_CUDA

4、测试

在 Python 环境下输入

import cv2
cv2.__version__

 输入 pip3 list 查看 Dlib 的版本。

好了,以上就是在 ARM 平台安装 OpenCV 和 Dlib 的过程,有任何建议和疑问欢迎在评论区中提出来嗷。 

上一篇:乐得瑞科技PD协议芯片:OTG与充电并行,引领数据交互


下一篇:JS——9大陷阱