在本指南中,我们将引导您完成在Raspberry Pi上设置OpenCV的过程。
成功将OpenCV安装到Raspberry Pi上需要几个不同的步骤,并且要有一定的耐心。
对于那些不知道什么是OpenCV的人。它是一个包含不同编程功能的库,旨在处理实时计算机视觉。
使用计算机视觉,您可以实时解释图像和视频。使您可以相对轻松地执行诸如运动检测和面部识别之类的任务。
树莓派是开始学习OpenCV的绝佳平台,并且还可以用作价格适中的小型设备。
设备清单
- 树莓派 1、2、3或4
- SD卡
- 树莓派电源
- 以太网线或 WI-FI无线网卡(Pi 3和4内置WiFi)
- 树莓派摄像头
安装OpenCV的软件包
在本节中,我们将引导您完成安装所有编译和运行OpenCV软件所需的软件包的过程。
由于OpenCV在树莓派上需要许多软件包,因此我们将通过几个步骤安装它们。
1.在继续之前,我们应该先更新任何先前存在的软件包。
您可以通过运行以下两个命令来更新当前安装的软件包。
sudo apt update
sudo apt upgrade
2.现在,我们可以开始安装OpenCV编译所需的所有软件包的过程。
首先,运行以下命令。此命令将安装包含编译OpenCV代码所需工具的软件包。
sudo apt install cmake build-essential 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的过程。
当设备的物理内存用完时,操作系统将使用交换空间。尽管交换内存比无力内存慢很多,但在某些情况下它仍然很有用。
通过运行以下命令开始修改交换文件配置。
sudo nano /etc/dphys-swapfile
2.在此文件中时,我们需要查找并替换以下行。
找到
CONF_SWAPSIZE=100
用以下这行来代替
CONF_SWAPSIZE=2048
更改后,按CTRL+ X,Y然后按,保存文件Enter。
3.在更改交换文件配置后,我们需要使用以下命令重新启动其服务。
sudo systemctl restart dphys-swapfile
通过重新启动服务,我们迫使它重新创建交换文件。
4.接下来,让我们继续并将所需的两个OpenCV存储库克隆到Raspberry Pi中。
运行这两个命令将从其git存储库中检索OpenCV的最新可用版本。
git clone https://github.com/opencv/opencv.git
git clone https://github.com/opencv/opencv_contrib.git
由于这些存储库很大,因此可能需要一些时间才能克隆到您的Raspberry Pi。
在树莓派上编译OpenCV
1.首先,在克隆的“ opencv ”文件夹中创建一个名为“ build ”的目录,然后将工作目录更改为该目录。
mkdir ~/opencv/build
cd ~/opencv/build
在此文件夹中,我们将在树莓派上编译OpenCV。
2.现在我们位于新创建的build文件夹中,现在我们可以cmake
用来准备OpenCV以便在树莓派上进行编译。
运行以下命令以生成所需的makefile。
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 INSTALL_PYTHON_EXAMPLES=OFF \
-D OPENCV_ENABLE_NONFREE=ON \
-D CMAKE_SHARED_LINKER_FLAGS=-latomic \
-D BUILD_EXAMPLES=OFF ..
3. make文件成功完成生成后,我们现在可以通过运行以下命令最终继续编译OpenCV。
我们使用参数-j$(nproc)
来告诉编译器为每个可用处理器运行编译器。
这样做将大大加快编译过程,并使Raspberry Pi上的每个内核都可以编译OpenCV。
make -j$(nproc)
请注意,编译过程可能会花费大量时间。在树莓派4上,此过程耗时约1个小时。
4.编译过程完成后,我们可以继续安装OpenCV。
对我们来说幸运的是,这是一个相当简单的过程,需要您运行以下命令。
sudo make install
此命令将自动将所有必需的文件复制到所需的位置。
5.现在,我们还需要重新生成操作系统库链接缓存。
如果不运行以下命令,树莓派将无法找到我们的OpenCV安装。
sudo ldconfig
编译后清理
1.现在我们已经完成了OpenCV的编译,我们不再需要这么大的交换文件。
让我们再次使用以下命令编辑交换文件配置。
sudo nano /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上加载。
import cv2
3.现在导入了OpenCV模块,我们应该能够检索其版本。
要获取OpenCV的版本,请使用以下命令。
cv2.__version__
4.如果现在一切正常,并且OpenCV已成功安装到您的Raspberry Pi中,则您应该在命令行中看到如下所示的文本。
'4.1.2'
希望此时您将启动并运行OpenCV。