此处假设树莓派基础配置(初始化、网络等)已经配置完成。
下面,开始进入正式环节。

1 换源及更新

1.1 编辑 /etc/apt/sources.list 文件

在终端执行如下命令

sudo nano /etc/apt/sources.list

(对于nano,它是一个字符终端的文本编辑器,有点像DOS下的editor程序。它比vi/vim要简单得多,比较适合Linux初学者使用。)

先将其中的原有的源注释掉,换成清华镜像

deb http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ buster main non-free contrib
deb-src http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ buster main non-free contrib

pip安装gpu的mxnet_树莓派


^o + 回车 保存, ^x 退出

1.2 编辑 /etc/apt/sources.list.d/raspi.list 文件

终端执行

sudo nano /etc/apt/sources.list.d/raspi.list

注释其中所有并更换为

deb http://mirrors.tuna.tsinghua.edu.cn/raspberrypi/ buster main ui

pip安装gpu的mxnet_pip安装gpu的mxnet_02


保存并退出

1.3 更新
sudo apt-get update
sudo apt-get upgrade

另外,如果装OpenCV的话磁盘空间最低应保持10G以上
可以使用

df -h

查看

pip安装gpu的mxnet_python_03


这个是装完后的,装之前应该是11G

2 扩展系统文件系统

终端输入

sudo raspi-config

进入

pip安装gpu的mxnet_python_04

pip安装gpu的mxnet_python_05


选择这两个,并退出,系统会提示你重启,这时等待upgrade完成后用(中断更新会error)

sudo reboot

重启(之后就能看到所有的磁盘空间了)

另外,关于raspi-config 这里有一篇文章做了简介
使用Raspi-config配置工具来设置树莓派

3 安装依赖及工具

sudo apt-get install build-essential git cmake pkg-config
sudo apt-get install libjpeg.dev libtiff5-dev libpng-dev
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
sudo apt-get install libxvidcore-dev libx264-dev
sudo apt-get install libgtk-3-dev
sudo apt-get install libcanberra-gtk*
sudo apt-get install libatlas-base-dev gfortran

可以更新一下python

sudo apt-get install python3-dev

4 下载OpenCV及contrib

在github上下载

wget -O opencv.zip https://github.com/opencv/opencv/archive/4.3.0.zip
wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/4.3.0.zip

下载完成后可以更改下名字(纯粹为了方便)

mv opencv-4.3.0 opencv
mv opencv_contrib-4.3.0 opencv_contrib

下载一下pip

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

执行下python文件(安装pip)

sudo python3 get-pip.py

5 安装虚拟环境并配置profile文件

sudo pip install virtualenv virtualenvwrapper

配置profile文件

echo -e "\n# virtualenv and virtualenvwrapper" >> ~/.profile
echo "export WORKON_HOME=$HOME/.virtualenvs" >> ~/.profile
echo "export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3" >> ~/.profile
echo "source /usr/local/bin/virtualenvwrapper.sh" >> ~/.profile
echo "export VIRTUALENVWRAPPER_ENV_BIN_DIR=bin" >> ~/.profile
echo "export VIRTUALENVWRAPPER_VIRTUALENV=/usr/local/bin/virtualenv" >> ~/.profile

并执行

source ~/.profile

接下来就可以进入虚拟环境了

mkvirtualenv cv -p python3

进入后命令行前面会出现(cv)

pip安装gpu的mxnet_树莓派_06

6 安装OpenCV(CMake)

首先先安装下numpy(前置条件)

pip install numpy

创建一个build路径并cd进去

cd ~/opencv
mkdir build
cd build

cmake

cmake -D CMAKE_BUILD_TYPE=RELEASE \
   -D CMAKE_INSTALL_PREFIX=/usr/local \
   -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules \
   -D ENABLE_NEON=ON \
   -D ENABLE_VFPV3=ON \
   -D BUILD_TESTS=OFF \
   -D OPENCV_ENABLE_NONFREE=ON \
   -D INSTALL_PYTHON_EXAMPLES=ON \
   -D BUILD_EXAMPLES=ON ..

7 编译

在正式编译之前先扩展一下树莓派的交换空间以提升编译速度

sudo nano /etc/dphys-swapfile

pip安装gpu的mxnet_python_07


将CONF_SWAPSIZE的值改为2048

保存并退出

关于树莓派的交换分区SWAP
SWAP就是LINUX下的虚拟内存分区,它的作用是在物理内存使用完之后,将磁盘空间(也就是SWAP分区)当成虚拟内存来使用。它和Windows系统的交换文件作用类似,但是它是一段连续的磁盘空间,并且对用户不可见。
另外关于修改交换空间 : 树莓派修改交换空间

重启一下

sudo /etc/init.d/dphys-swapfile stop
sudo /etc/init.d/dphys-swapfile start

使用全部(4个)核心进行编译

make -j4

pip安装gpu的mxnet_pip安装gpu的mxnet_08


编译过程会持续数小时,请耐心等待…

8 将OpenCV4链接到Python3虚拟环境中

从SystemSite-Packages目录中的OpenCV安装创建一个符号链接到我们的虚拟环境:

cd ~/.virtualenvs/cv/lib/python3.7/site-packages/
ln -s /usr/local/python/cv2/python-3.7/cv2.cpython-37m-arm-linux-gnueabihf.so cv2.so
cd ~

关于 ln 命令 Linux ln命令

这一步至关重要。如果不创建符号链接,就无法在脚本中导入OpenCV。另外,确保上述命令中的路径和文件名对于Raspberry PI是正确的。

9 验证

打开终端并输入如下内容

>>> import cv2
>>> cv2.__version__

若python正确返回了OpenCV的版本信息,则证明安装成功。

pip安装gpu的mxnet_virtualenv_09