在本指南中,我们将引导您完成在树莓派上设置 OpenCV 的过程。
成功将 OpenCV 安装到树莓派上需要几个不同的步骤,并且需要一定的耐心。
对于那些不知道 OpenCV 是什么的人。它是一个旨在处理实时计算机视觉的不同编程功能的库。
使用计算机视觉,您可以实时解释图像和视频。使您可以相对轻松地执行诸如运动检测和面部识别之类的任务。
树莓派是开始学习 OpenCV 的绝佳平台,并且还可以用作价格适中的小型设备。
设备清单
这是我们为树莓派 OpenCV 教程推荐的所有设备。
推荐的
树莓派 1、 2 、 3 或 4
Micro SD 卡
电源
Ethernet Cord 或 * WiFi dongle (Pi 3 和 4 具有内置 WiFi)
树莓派相机或 * USB WebCam
可选的
- 树莓派外壳
本教程已使用最新版本的 Raspbian Buster 进行了测试。如果您运行的是 Raspbian 的旧版本,则可以使用我们的指南升级到 Buster 。
为 OpenCV 安装软件包
在本节中,我们将引导您完成安装所有编译和运行 OpenCV 软件所需的软件包的过程。
由于 OpenCV 在树莓派上需要许多软件包,因此我们将通过几个步骤安装它们。
1 在继续之前,我们应该先更新任何现有的软件包。
您可以通过运行以下两个命令来更新当前安装的软件包。
sudo apt update
sudo apt upgrade
2 现在,我们可以开始安装 OpenCV 编译所需的所有软件包的过程。
首先,运行以下命令。此命令将安装包含编译 OpenCV 代码所需工具的软件包。
sudo apt install cmake构建必需的 pkg -config git
3 接下来,我们将安装软件包,这些软件包将为 OpenCV 添加对不同图像和视频格式的支持。
使用以下命令将这些库安装到您的树莓派中。
sudo apt install libjpeg -dev libtiff-dev libjasper-dev libpng-dev libwebp-dev libopenexr-dev
sudo apt install libavcodec -dev libavformat-dev libswscale-dev libv4l-dev libxvidcore-dev libx264-dev libdc1394-22-dev libgstreamer-plugins-base1.0-dev libgstreamer1.0-dev
4 我们的下一步是使用以下命令安装 OpenCV 界面所需的所有软件包。
sudo apt install libgtk -3-dev libqtgui4 libqtwebkit4 libqt4-test python3-pyqt5
5 这些下一个软件包对于 OpenCV 在树莓派上以适当的速度运行至关重要。
您可以通过运行以下命令来安装这些软件包。
sudo apt install libatlas -base-dev liblapacke-dev gfortran
6 我们需要安装的第二批软件包与 OpenCV 用于管理数据的分层数据格式 (HDF5) 有关。
使用以下命令将 HDF5 软件包安装到您的 Pi 。
sudo apt install libhdf5 -dev libhdf5-103
7 最后,我们可以使用以下命令安装最后几个软件包。
这最后几个软件包将使我们能够在树莓派上编译支持 Python 的 OpenCV 。
sudo apt install python3-dev python3-pip python3-numpy
在继续下一节之前,请确保所有软件包都已成功安装。
准备要编译 OpenCV 的树莓派
1 现在已经安装了在树莓派上编译 OpenCV 所需的所有软件包,在开始编译过程之前,我们需要做一些准备工作。
现在,我们将需要暂时增加交换空间的大小,以帮助在树莓派上编译 OpenCV 的过程。
当设备的物理 RAM 用完时,操作系统将使用交换空间。尽管交换内存比 RAM 慢很多,但在某些情况下它仍然很有用。
通过运行以下命令开始修改交换文件配置。
sudo vim /etc/dphys-swapfile
2 在此文件中时,我们需要查找并替换以下行。
找
CONF_SWAPSIZE = 100
用。。。来代替
CONF_SWAPSIZE = 2048
更改后,按 CTRL + X,然后按 Y ,然后按 Enter ,保存文件。3 在更改交换文件配置后,我们需要使用以下命令来重新启动其服务。
sudo systemctl restart dphys -swapfile
通过重新启动服务,我们迫使它重新创建交换文件。
4 接下来,我们继续将所需的两个 OpenCV 存储库克隆到树莓派中。
运行这两个命令将从其 git 存储库中检索 OpenCV 的最新可用版本。
git clone https://github.com/opencv/opencv.git
git clone https://github.com/opencv/opencv_contrib.git
由于这些存储库很大,因此可能需要一些时间才能克隆到您的树莓派。
在树莓派上编译 OpenCV
1 首先,在克隆的”** opencv “文件夹中创建一个名为”** build ****” 的目录,然后将工作目录更改为该目录。
mkdir〜/opencv/build
cd〜/opencv/build
在此文件夹中,我们将在您的树莓派上编译 OpenCV 。
2 现在我们位于新创建的 build 文件夹中,我们现在可以使用 cmake
准备 OpenCV 以便在树莓派上进行编译。
运行以下命令以生成所需的 makefile 。
cmake -D CMAKE_BUILD_TYPE =发布\
-D CMAKE_INSTALL_PREFIX =/usr/local \
-D OPENCV_EXTRA_MODULES_PATH =〜/opencv_contrib /模块\
-D ENABLE_NEON =开\
-D ENABLE_VFPV3 =打开\
-D BUILD_TESTS = OFF \
-D INSTALL_PYTHON_EXAMPLES =关闭\
-D OPENCV_ENABLE_NONFREE =打开\
-D CMAKE_SHARED_LINKER_FLAGS = -latomic \
-D BUILD_EXAMPLES = OFF ..
3 一旦 make 文件成功完成生成,我们现在终于可以通过运行以下命令继续编译 OpenCV 。
我们使用参数 - j $(nproc) 来告诉编译器为每个可用处理器运行一个编译器。
这样做将大大加快编译速度,并使树莓派上的每个内核都可以编译 OpenCV 。
使-j $(nproc)
请注意,编译过程可能会花费大量时间。在我们的树莓派 4 上,此过程大约需要 1 个小时才能完成。
4 编译过程完成后,我们可以继续安装 OpenCV 。
对我们来说幸运的是,这是一个相当简单的过程,需要您运行以下命令。
sudo 使安装
此命令将自动将所有需要的文件复制到需要的位置。
5 现在,我们还需要重新生成操作系统库链接缓存。
如果不运行以下命令,树莓派将无法找到我们的 OpenCV 安装。
sudo ldconfig
编译后清理
1 现在我们已经完成了 OpenCV 的编译,我们不再需要这么大的交换文件。
让我们使用以下命令再次编辑交换文件配置。
sudo vim /etc/dphys-swapfile
2 在此文件中,您需要查找并更改以下行。
找
CONF_SWAPSIZE = 2048
用。。。来代替
CONF_SWAPSIZE = 100
完成后,按 CTRL + X,然后按 Y ,然后按 Enter ,保存文件。
3 现在,我们的最终清理任务要求我们重新启动交换文件服务。
重新启动服务会将文件大小从 2GB 减小到 100 MB。
sudo systemctl restart dphys -swapfile
在树莓派上测试 OpenCV
1 要测试现在是否已将 OpenCV 安装到我们的树莓派中,我们将使用 Python 3 安装。
通过运行以下命令启动 Python 终端。
python3
2 在 Python 中时,我们现在可以使用以下命令导入 OpenCV Python 模块。
通过导入模块,我们可以首先检查 OpenCV 是否甚至可以在我们的 Pi 上加载。
导入 cv2
3 现在导入了 OpenCV 模块,我们应该能够检索其版本。
要获取 OpenCV 的版本,请使用以下命令。
cv2 .__ version__
4 如果现在一切正常,并且 OpenCV 已成功安装到您的树莓派中,那么您应该在命令行中看到类似以下的文本。
'4.1.2'
希望此时您将启动并运行 OpenCV 。
如果您对此树莓派 OpenCV 教程遇到任何问题或有任何反馈,请与我联系。