在本指南中,我记录了下如何在树莓派上安装和配置OpenCV。
将OpenCV安装到Raspberry Pi上需要几个的步骤和一些耐心。
OpenCV是一个函数库,旨在处理实时计算机视觉。
利用计算机视觉,可以实时解读图像和视频,可以相对轻松地执行诸如运动检测和面部识别等任务。
树莓Pi是一个很好的开始学习OpenCV的平台,同时也是一个经济实惠的小型设备。
设备清单
下面是树莓派OpenCV教程的所需设备,点击链接可以直达特别优惠购买。
建议
- ? 树莓派
- ? 高速SD卡
- ? 树莓派4B电源
- ? 以太网线或WiFi (Pi 3和4内置了WiFi)
- ? 摄像头模块
可选
我使用最新版本的Raspbian Buster进行了测试。如果你正在运行旧版本的Raspbian,你可以使用我的指南升级到Buster。
安装OpenCV编译所需的软件包
在本节中,完成安装编译和运行OpenCV软件所需的所有包的过程。
由于OpenCV在Raspberry Pi上需要很多包,通过几个步骤来安装这些包。
1. 在继续之前,首先更新存在的软件包。
运行以下两个命令更新当前安装的软件包。
sudo apt update
sudo apt upgrade
2. 现在可以开始安装OpenCV编译所需的所有包了。
运行下面的命令。该命令将安装包含编译OpenCV代码所需工具的包。
sudo apt install cmake build-essential pkg-config git
3. 接下来,安装OpenCV添加支持不同图像和视频格式的包。
使用以下命令将这些库安装到Raspberry Pi上。
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在Raspberry Pi上的运行速度至关重要。
可以通过运行以下命令来安装这些软件包。
sudo apt install libatlas-base-dev liblapacke-dev gfortran
6. 需要安装的第二批软件包与OpenCV用来管理数据的数据格式(HDF5)有关。
使用下面的命令安装HDF5包到Pi上。
sudo apt install libhdf5-dev libhdf5-103
7. 最后,可以使用下面的命令来安装最后几个包。
最后这几个包可以在Raspberry Pi上编译支持Python的OpenCV。
sudo apt install python3-dev python3-pip python3-numpy
在进入下一节之前,请确保所有的软件包都安装成功。
为编译OpenCV对Raspberry Pi做些配置
1. 现在已经安装了在Raspberry Pi上编译OpenCV所需的所有包,在开始编译之前,需要做一些准备工作。
需要临时增加交换空间的大小,以便在Raspberry Pi上编译OpenCV。
当设备的物理RAM用完后,操作系统就会使用交换空间。虽然交换内存的速度比RAM慢很多,但在某些情况下还是很有帮助的。
通过运行以下命令开始修改交换文件配置。
sudo nano /etc/dphys-swapfile
2. 在这个文件中,需要找到并替换以下一行:
寻找
CONF_SWAPSIZE=100
替换为
CONF_SWAPSIZE=2048
更改后,按CTRL+X后按Y再按Enter键保存文件。
3. 由于已经对swapfile的配置进行了修改,需要利用下面的命令来重新启动它的服务。
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。
在Raspberry Pi上编译OpenCV。
1. 先在克隆的 “opencv “文件夹内创建一个名为 “build “的目录,然后将工作目录改为它。
mkdir ~/opencv/build
cd ~/opencv/build
在这个文件夹中,在Raspberry Pi上编译OpenCV。
2. 现在进入了新创建的build文件夹中,可以使用cmake来准备在Raspberry Pi上编译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)
请注意,编译过程可能需要相当长的时间。在我的Raspberry Pi 4上,这个过程大约需要1小时才能完成。
4. 当编译过程完成后,就可以继续安装OpenCV了。
需要运行以下命令。
sudo make install
该命令会自动将所有需要的文件复制到需要的位置。
5. 现在还需要重新生成操作系统的库链接缓存。
如果不运行以下命令,Raspberry Pi将无法找到OpenCV。
sudo ldconfig
编译后的清理工作
1. 现在已经完成了OpenCV的编译,不再需要这么大的交换文件。
用下面的命令来编辑交换文件的配置。
sudo nano /etc/dphys-swapfile
2. 在这个文件中,需要找到并修改以下一行:
寻找
CONF_SWAPSIZE=2048
替换为
CONF_SWAPSIZE=100
完成后,按CTRL+X后按Y再按Enter键保存文件。
3. 现在最后的清理任务需要重新启动交换文件服务。
重新启动服务会将文件从2GB缩小到100MB。
sudo systemctl restart dphys-swapfile
在Raspberry Pi上测试OpenCV
1. 为了测试OpenCV是否已经安装到Raspberry Pi上,要利用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。
如果在这个Raspberry Pi OpenCV教程中遇到了任何问题或有任何反馈,欢迎在下面留言。
欢迎转载,请留下出处链接:Labno3 » 树莓派计算机视觉,如何在Raspberry Pi上编译安装OpenCV