写在前面

在为树莓派编译 OpenCV 的过程中,遇到一些大的文件则很容易让 cmake 卡死或者被系统杀掉。除了可以使用增加的 swap 空间缓解这个问题外, OpenCV 官方更为推荐的便是使用 PC 机为其交叉编译。

准备工作

  • 一台 ARM v7 架构的树莓派 3B+ (本文使用树莓派 3B+ 为例)
  • 一台 x86_64 架构的 Ubuntu PC

Ubuntu 或许可以使用其他发行版或 WSL2 代替,但并未测试。

创建 Docker 环境

1、新建文件夹用于存放编译过程中的杂项

$ mkdir rpi3-compiling-env
$ cd rpi3-compiling-env

2、安装 Docker

$ sudo apt-get install docker.io

3、创建用于编译的 Docker 容器。

注意,WSL2 中可能需要先使用 dockerd 手动开启 docker 服务。

第一次执行这个命令将会花费比较长的一段时间,因为需要从服务器下载对应的容器。

$ sudo docker run sdthirlwall/raspberry-pi-cross-compiler:legacy-trusty >rpi3-compiling-env

4、将容器镜像设置为可执行

$ chmod +x rpi3-compiling-env

5、进入 docker 容器

$ sudo ./rpi3-compiling-env bash

安装依赖

$ apt-get update
$ apt-get install build-essential cmake pkg-config libjpeg-dev libtiff5-dev libjasper-dev libpng12-dev libavcodec-dev libavformat-dev libswscale-dev libv4l-dev libxvidcore-dev libx264-dev libatlas-base-dev gfortran python2.7-dev python3-dev wget unzip libz-dev zlib1g-dev

下载 OpenCV 源代码

OpenCV 源代码分为两部分,其中可选安装拓展算法 opencv_contrib。

OpenCV: https://github.com/opencv/opencv/releases

OpenCV_Contrib: https://github.com/opencv/opencv_contrib/releases

$ wget https://github.com/opencv/opencv/archive/refs/tags/4.5.2.zip
$ wget https://github.com/opencv/opencv_contrib/archive/refs/tags/4.5.2.zip
$ unzip opencv-4.5.2.zip
$ unzip opencv_contrib-4.5.2.zip

配置编译环境

1、安装 pip

$ wget https://bootstrap.pypa.io/get-pip.py
$ sudo python3 get-pip.py

2、安装 Python 依赖

$ pip3 install numpy

开始编译

$ cd opencv-4.5.2
$ mkdir build
$ cd build
$ cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-3.5.2/modules \
-D BUILD_EXAMPLES=ON ..
$ make -j8

1、为树莓派创建二进制文件

$ make install

2、压缩二进制文件

$ tar -zcvf opencv_build4.5.2.tar.gz install

3、退出 docker 容器

$ exit

4、将第二步生成的 .tar.gz 文件复制到树莓派中。

在树莓派安装

1、在树莓派上解压上文生成的压缩包

$ tar -xf opencv_build3.4.tar.gz

2、在树莓派安装

$ sudo rsync -a install/ /usr/local
$ sudo ldconfig -v

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注