安装 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 的过程,有任何建议和疑问欢迎在评论区中提出来嗷。