感谢以下文章带给我的帮助!

子豪兄教你在树莓派上安装OpenCV - 知乎 (zhihu.com)

在 Linux 系统中编译安装 OpenCV - 知乎 (zhihu.com)

如何在Debian 10安装OpenCV | myfreax

How to Install OpenCV on Debian 10 Linux | Linuxize

由于想准备一下电赛,熟悉opencv再加上最近写pthon比较多,故本次的目标是:在树莓派上完成对python-OpenCV的支持

本次安装环境为树莓派4B官方64位操作系统(可是显示的是Debian呀呀呀)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
pi@raspberrypi:~ $ neofetch
_,met$$$$$gg. pi@raspberrypi
,g$$$$$$$$$$$$$$$P. --------------
,g$$P" """Y$$.". OS: Debian GNU/Linux 11 (bullseye) aarch64
,$$P' `$$$. Host: Raspberry Pi 4 Model B Rev 1.5
',$$P ,ggs. `$$b: Kernel: 5.15.61-v8+
`d$$' ,$P"' . $$$ Uptime: 18 hours, 49 mins
$$P d$' , $$P Packages: 1525 (dpkg)
$$: $$. - ,d$$' Shell: bash 5.1.4
$$; Y$b._ _,d$P' Terminal: /dev/pts/5
Y$$. `.`"Y$$$$P"' CPU: BCM2835 (4) @ 1.800GHz
`$$b "-.__ Memory: 881MiB / 7812MiB
`Y$$
`Y$$.
`$$b.
`Y$$b.
`"Y$b._
`"""

python版本3.9.2

另一种方法:直接安装库

这种方法异常简单,直接:

1
2
sudo apt update
sudo apt install python3-opencv

然鹅这种方法很快就被我抛弃了,因为这样安装的只是一个共享动态链接库,python函数的源码是没有的。这对于vscode的代码提示十分不友好。为了让我的vscode和记事本有一点区分度,我选择了编译

前置条件

  • 联网的树莓派
  • 时间

树莓派分区扩展

这步的原因是SD卡空间不足

1
sudo raspi-config

进入交互模式后,在Advance Options里选择Expand FileSystem,然后reboot

前置依赖安装

  • python不必多说
  • numpy opencv的图像数组基于numpy的ndarray
  • build-essential 编译必备工具链
  • cmake
  • 等等

编译文件夹环境搭建

为了不用改路径,建议绝对路径设置成一样的

创建源代码文件夹,克隆git仓库到本地

1
2
3
mkdir ~/opencv_build && cd ~/opencv_build
git clone https://github.com/opencv/opencv.git
git clone https://github.com/opencv/opencv_contrib.git

进入opencv仓库,创建build文件夹(make命令在build文件夹下执行,防止make产生的文件污染仓库)

1
2
cd ~/opencv_build/opencv
mkdir build && cd build

make,这里有很多选项,我的最终版本如下

1
2
pi@raspberrypi:~/opencv_build/opencv/build $ 
cmake -D CMAKE_VERBOSE_MAKEFILE=ON -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D OPENCV_GENERATE_PKGCONFIG=ON -D OPENCV_EXTRA_MODULES_PATH=~/opencv_build/opencv_contrib/modules -D BUILD_EXAMPLES=ON -D BUILD_SHARED_LIBS=ON -D OPENCV_ENABLE_NONFREE=ON -D ENABLE_CXX11=ON -D BUILD_TESTS=OFF -D BUILD_PERF_TESTS=OFF -D OPENCV_GENERATE_PKGCONFIG=ON -D BUILD_opencv_python3=ON -D PYTHON3_LIBRARY=/usr/lib/aarch64-linux-gnu/libpython3.9.so -D PYTHON3_NUMPY_INCLUDE_DIRS=/usr/lib/python3/dist-packages/numpy/core/include -D PYTHON3_PACKAGES_PATH=/usr/lib/python3/dist-packages ..

生成,-j参数是调用几个cpu核心,具体可以通过命令nproc查看

1
make -j4

安装

1
sudo make install

于是乎就完成了,出乎意料的有些顺利。。。