[分享] 在 Raspberry Pi 64 位 OS 上安装 OpenCV 4.5
[复制链接]
介绍
Raspberry Pi正在向64位操作系统发展。在一年左右的时间内,32位操作系统将被更快的64位版本完全取代。
树莓基金会最近发布了一个不仅仅是功能性的测试版。安装说明可在此处找到。本指南是指导在Raspberry Pi 4上的64位操作系统上安装OpenCV 4.5.x。
您可以在OpenCV的GitHub页面上找到4.5.x版本的发行说明。
OpenCV Lite
寻找更小的 OpenCV ?我们的OpenCV Lite安装可能正是您所需要的。只是很基本的安装,为您节省了大量内存。
OpenCV 4.5.1
2020年 12月 22 日,OpenCV 发布了 5.1.4 版本。 此版本中最重要的改进是G-API框架和RISC-V端口。两者都不会影响Raspberry Pi。这就是为什么我们没有此版本的特殊安装指南。如果您希望使用4.5.0 以上版本,请在下载过程中随意选择版本号从 4.5.0 到4.5.1 。
OpenCV 4.5.2
2021 年 4 月 2 日,OpenCV 发布了 4.5.2 版本。在此处的日志文件中查找版本重大变更。在 imgproc、videoio 和 DNN 模块中进行了重要更改。在下载过程中,请随意将版本号从 4.5.0 更改为4.5.2。
OpenCV 4.5.3
2021 年 7 月 5 日,OpenCV 发布了 4.5.3 版本。除了各种错误修复和改进外,最重要的变化是DaSiamRPN跟踪器,这是一个GPU FFmpeg后端,用于CUDA后端中的videoio和MatMul支持。更多信息在这里。
OpenCV 4.5.4
2021 年 10 月 11 日,OpenCV 发布了 4.5.4 版本。主要变化是 DNN 模块的持续改进。当然,还有错误修复和改进。更多信息在这里。
OpenCV 4.5.5
2021 年 12 月 25 日,OpenCV 发布了 4.5.5 版本。同样,最大的变化是对 DNN 模块的改进。当然,还有错误修复和改进。更多信息在这里。
您应该知道有一个问题。Python3 安装脚本修改不正确。它会将所有库放在错误的目录中,Python 找不到它们。通过将 -D PYTHON3_PACKAGES_PATH=/usr/lib/python3/dist-packages 添加到构建中,库就会存储在正确的文件夹中。问题解决后,我们将删除此解决方法。这是GitHub上的错误报告。
OpenCV 4.6.0
2022 年 7 月 7 日,OpenCV 发布了 4.6.0 版本。除了对 DNN 库的更改和改进之外,最重要的更改是对 GCC 15 和 Clang 5 编译器的支持。同样值得注意的是对FFmpeg 5.0的支持。
我们必须使用额外的行 -D PYTHON3_PACKAGES_PATH=/usr/lib/python3/dist-packages。
从 Python 3.12 开始,dist-packages 文件夹中的安装被弃用,取而代之的是site-package文件夹。
版本检查
在Raspberry 64位操作系统上安装OpenCV 4.5之前,您应该首先检查您的版本。运行命令 uname -a 并使用下面的屏幕打印验证您的版本。
您还需要使用命令 gcc -v 检查您的C++编译器版本。它还必须是 aarch64-linux-gnu 版本,如屏幕截图所示。如果您使用的是 64 位操作系统,但您的 gcc 版本与上面给出的版本不同,请使用最新版本重新安装整个操作系统。这里有指南:在树莓派4上安装 64 位操作系统 。您必须有一个 64 位 C++ 编译器,因为我们将从头开始构建所有库。否则,在64位机台上构建32版本是没有意义的。
交换检查
下一个检查是内存交换的大小。它必须足够大以支撑构建。
版本 4.5.2
OpenCV 版本 4.5.2 需要更多的内存。如果您有具有4或8 GB内存的Raspberry Pi 4,则没有任何更改。仅当您拥有具有 2 GB RAM 的树莓派 4 时,您才需要增加 zram 配置文件中的交换空间。请按照您在安装64位操作系统时已经知道的说明进行操作。
$ sudo nano /usr/bin/zram.sh
# alter the limit with * 2
mem=$(( ($totalmem / $cores)* 1024 * 3))
# save with <Ctrl+X>, <Y> and <Enter>
$ sudo reboot
通过将比率增加到三倍,您将获得 1.8 GB 的额外交换空间。这对于构建OpenCV 4.5.2就足够了。
版本 4.5.0 - 4.5.1
OpenCV 版本 4.5.0 或 4.5.1 至少需要总共 5.5 GB 的内存。如果您根据我们的指南安装了 64 位操作系统,这应该没有问题。
如果你有一个没有安装 zram.sh 的Raspberry Pi 4,你可能已经安装了最初安装的dphys-swapfile。在这种情况下,您必须增加默认的 100 MB 交换空间。使用板载 4 GB RAM 的树莓派,您必须增加到最大 2048 GByte。但是,使用只有 2 或 1 GB RAM 的树莓派,您会遇到麻烦。
要超过通常在 /etc/dphys-swapfile 中找到的 2048 MB 限制,您必须首先在 /sbin/dphys-swapfile 中增加此最大值。下面的幻灯片演示了所有内容。
# activate the modifications
$ sudo reboot
EEPROM检查
最后是检查EEPROM软件版本。Raspberry Pi 3在SD卡上安装了所有操作软件。另一方面,Raspberry Pi 4也部分从两个EEPROM启动。这些EEPROM在工厂进行PCB组装后进行编程。Raspberry 基金会最近为这些 EEPROM 发布了新的和改进的软件。这与OpenCV无关,但与散热有关。在我们的一个视觉应用中,只需更新EEPROM的内容,CPU的热量就会从65°C(149°F)下降到48°C(118°F)。而且,如您所知,较低的 CPU 温度将延长您的 Pi 寿命。有关详细信息,请参阅此文章。
使用以下命令检查并在需要时更新 EEPROM。以下是说明。
# to get the current status
$ sudo rpi-eeprom-update
# if needed, to update the firmware
$ sudo rpi-eeprom-update -a
$ sudo reboot
注意
一些警告的话。不要使用 pip3 在树莓派上安装 OpenCV。也不要使用 sudo apt-get 安装。所有版本都不是最新的,当然也不是 64 位。安装 OpenCV 4.5 的唯一正确方法是从源代码构建它。
显卡内存
如此处所述,物理 RAM 芯片由 CPU 和 GPU 同时使用。 如有必要,请使用以下菜单检查并将容量更改为至少 128 MB。
安装脚本
在Raspberry Pi上安装OpenCV并不复杂。凭借其 60 个命令行,它更像是一项管理任务。这就是我们创建一个安装脚本的原因,该脚本可以一次执行本指南中的所有命令。如果需要,请使用它,它应该不会引起任何问题。 整个安装需要一个半小时才能完成。 它从安装依赖项开始,以 ldconfig 结束。
如果您想使用 Qt5 GUI 美化您的 OpenCV,请按照 GitHub 页面上或以下部分中的说明进行操作。
OpenCV 4.5.5
# check your memory first
$ free -m
# you need at least a total of 6.5 GB!
# if not, enlarge your swap space as explained in the guide
$ wget
$ sudo chmod 755 ./OpenCV-4-5-5.sh
$ ./OpenCV-4-5-5.sh
OpenCV 4.5.4
# check your memory first
$ free -m
# you need at least a total of 6.5 GB!
# if not, enlarge your swap space as explained in the guide
$ wget
$ sudo chmod 755 ./OpenCV-4-5-4.sh
$ ./OpenCV-4-5-4.sh
OpenCV 4.5.3
# check your memory first
$ free -m
# you need at least a total of 6.5 GB!
# if not, enlarge your swap space as explained in the guide
$ wget
$ sudo chmod 755 ./OpenCV-4-5-3.sh
$ ./OpenCV-4-5-3.sh
OpenCV 4.5.2
# check your memory first
$ free -m
# you need at least a total of 6.5 GB!
# if not, enlarge your swap space as explained in the guide
$ wget
$ sudo chmod 755 ./OpenCV-4-5-2.sh
$ ./OpenCV-4-5-2.sh
OpenCV 4.5.1
# check your memory first
$ free -m
# you need at least a total of 5.5 GB
# if not, enlarge your swap space as explained in the guide
$ wget
$ sudo chmod 755 ./OpenCV-4-5-1.sh
$ ./OpenCV-4-5-1.sh
OpenCV 4.5.0
# check your memory first
$ free -m
# you need at least a total of 5.5 GB
# if not, enlarge your swap space as explained in the guide
$ wget
$ sudo chmod 755 ./OpenCV-4-5-0.sh
$ ./OpenCV-4-5-0.sh
清洁和移除 dphys-swap 应该按照这些说明手动完成。
依赖
不使用脚本?这是完整指南。
OpenCV软件使用其他第三方软件库。必须先安装这些。有些带有Raspberry 64位操作系统,有些可能已经安装。安全总比后悔好,所以这里是完整的列表。仅根据该过程安装最新的软件包。
# check for updates
$ sudo apt-get update
$ sudo apt-get upgrade
# dependencies
$ sudo apt-get install build-essential cmake git unzip pkg-config
$ sudo apt-get install libjpeg-dev libpng-dev
$ sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev
$ sudo apt-get install libgtk2.0-dev libcanberra-gtk* libgtk-3-dev
$ sudo apt-get install libgstreamer1.0-dev gstreamer1.0-gtk3
$ sudo apt-get install libgstreamer-plugins-base1.0-dev gstreamer1.0-gl
$ sudo apt-get install libxvidcore-dev libx264-dev
$ sudo apt-get install python3-dev python3-numpy python3-pip
$ sudo apt-get install libtbb2 libtbb-dev libdc1394-22-dev
$ sudo apt-get install libv4l-dev v4l-utils
$ sudo apt-get install libopenblas-dev libatlas-base-dev libblas-dev
$ sudo apt-get install liblapack-dev gfortran libhdf5-dev
$ sudo apt-get install libprotobuf-dev libgoogle-glog-dev libgflags-dev
$ sudo apt-get install protobuf-compiler
Qt5
Qt是一个开源工具包,用于开发跨平台图形用户界面。它也适用于Raspberry Pi。该软件可用于美化OpenCV窗口和其他用户界面,如滑块和复选框。对于OpenCV的工作来说,这绝对不是强制性的,只是为了修饰外观。 可以说,使用Qt5会使OpenCV的速度减慢几个百分点。如果您选择最快的应用程序,请不要使用它。
如果您希望在 OpenCV 中启用 Qt5 支持,则必须下载库,如以下命令所示。 下一步是在生成过程中设置 -D WITH_QT标志。
# only install if you want Qt5
# to beautify your OpenCV GUI
$ sudo apt-get install qt5-default
下载OpenCV
安装完所有第三方软件后,可以下载OpenCV本身。需要两个包;基本版本和其他。下载后,您可以解压缩文件。请注意文本框中的换行。这两个命令以 wget 开头,以 zip 结尾。
OpenCV 4.5.5
# check your memory first
$ free -m
# you need at least a total of 6.5 GB!
# if not, enlarge your swap space as explained earlier
# download the latest version
$ cd ~
$ wget -O opencv.zip
$ wget -O opencv_contrib.zip
# unpack
$ unzip opencv.zip
$ unzip opencv_contrib.zip
# some administration to make live easier later on
$ mv opencv-4.5.5 opencv
$ mv opencv_contrib-4.5.5 opencv_contrib
# clean up the zip files
$ rm opencv.zip
$ rm opencv_contrib.zip
OpenCV 4.5.4
# check your memory first
$ free -m
# you need at least a total of 6.5 GB!
# if not, enlarge your swap space as explained earlier
# download the latest version
$ cd ~
$ wget -O opencv.zip
$ wget -O opencv_contrib.zip
# unpack
$ unzip opencv.zip
$ unzip opencv_contrib.zip
# some administration to make live easier later on
$ mv opencv-4.5.4 opencv
$ mv opencv_contrib-4.5.4 opencv_contrib
# clean up the zip files
$ rm opencv.zip
$ rm opencv_contrib.zip
OpenCV 4.5.3
# check your memory first
$ free -m
# you need at least a total of 6.5 GB!
# if not, enlarge your swap space as explained earlier
# download the latest version
$ cd ~
$ wget -O opencv.zip
$ wget -O opencv_contrib.zip
# unpack
$ unzip opencv.zip
$ unzip opencv_contrib.zip
# some administration to make live easier later on
$ mv opencv-4.5.3 opencv
$ mv opencv_contrib-4.5.3 opencv_contrib
# clean up the zip files
$ rm opencv.zip
$ rm opencv_contrib.zip
OpenCV 4.5.2
# check your memory first
$ free -m
# you need at least a total of 6.5 GB!
# if not, enlarge your swap space as explained earlier
# download the latest version
$ cd ~
$ wget -O opencv.zip
$ wget -O opencv_contrib.zip
# unpack
$ unzip opencv.zip
$ unzip opencv_contrib.zip
# some administration to make live easier later on
$ mv opencv-4.5.2 opencv
$ mv opencv_contrib-4.5.2 opencv_contrib
# clean up the zip files
$ rm opencv.zip
$ rm opencv_contrib.zip
OpenCV 4.5.1
# download the latest version
$ cd ~
$ wget -O opencv.zip
$ wget -O opencv_contrib.zip
# unpack
$ unzip opencv.zip
$ unzip opencv_contrib.zip
# some administration to make live easier later on
$ mv opencv-4.5.1 opencv
$ mv opencv_contrib-4.5.1 opencv_contrib
# clean up the zip files
$ rm opencv.zip
$ rm opencv_contrib.zip
OpenCV 4.5.0
# download the latest version
$ cd ~
$ wget -O opencv.zip
$ wget -O opencv_contrib.zip
# unpack
$ unzip opencv.zip
$ unzip opencv_contrib.zip
# some administration to make live easier later on
$ mv opencv-4.5.0 opencv
$ mv opencv_contrib-4.5.0 opencv_contrib
# clean up the zip files
$ rm opencv.zip
$ rm opencv_contrib.zip
虚拟环境
现在是时候决定是否使用虚拟环境进行OpenCV安装了。我们不使用虚拟环境。相反,如果需要,我们只需交换SD卡即可。但是,安装虚拟环境也是可以的。所有说明均在 32 位 OpenCV 指南中给出。
TensorFlow
将TensorFlow和OpenCV导入Python可能会引发错误:无法在静态TLS块中分配内存。
此行为仅在 aarch64 系统上发生,并且是由未满足 OpenMP 内存要求引起的。有关更多信息,请参阅 GitHub #14884。
有几种解决方案。最简单的方法是在开始时导入 OpenCV,如上所示。
另一种是通过设置 -DBUILD_OPENMP 和 -DWITH_OPENMP 标志 OFF 来禁用 OpenMP。在可能的情况下,OpenCV现在将使用默认的pthread或TBB引擎进行并行化。
我们不推荐它。并非所有 OpenCV 算法都会自动切换到 pthread。我们的建议是先将OpenCV导入Python。
构建编译
在我们开始实际构建库之前,还有一小步要走。您必须创建一个可以找到所有构建文件的目录。
$ cd ~/opencv
$ mkdir build
$ cd build
现在是迈出重要一步的时候了。在这里,你告诉CMake什么,在哪里以及如何在你的Raspberry上制作OpenCV。涉及许多标志。你会认出的最多。您可能会注意到 -D WITH_QT=OFF 行。此处禁用了 Qt5 支持。如果选择将 Qt5 软件用于 GUI,请设置 -D WITH_QT=ON。 我们通过排除任何(Python)示例或测试来节省空间。
-D 标志之前只有暴露的空间,没有制表符。 顺便说一下,最后两个点不是错别字。它告诉 CMake 在哪里可以找到它的 CMakeLists.txt(大型配置文件);一个目录向上。
OpenCV 4.5.5
$ 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 WITH_OPENMP=ON \
-D WITH_OPENCL=OFF \
-D BUILD_TIFF=ON \
-D WITH_FFMPEG=ON \
-D WITH_TBB=ON \
-D BUILD_TBB=ON \
-D WITH_GSTREAMER=ON \
-D BUILD_TESTS=OFF \
-D WITH_EIGEN=OFF \
-D WITH_V4L=ON \
-D WITH_LIBV4L=ON \
-D WITH_VTK=OFF \
-D WITH_QT=OFF \
-D OPENCV_ENABLE_NONFREE=ON \
-D INSTALL_C_EXAMPLES=OFF \
-D INSTALL_PYTHON_EXAMPLES=OFF \
-D PYTHON3_PACKAGES_PATH=/usr/lib/python3/dist-packages \
-D OPENCV_GENERATE_PKGCONFIG=ON \
-D BUILD_EXAMPLES=OFF ..
OpenCV 4.5.4
$ 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 WITH_OPENMP=ON \
-D WITH_OPENCL=OFF \
-D BUILD_TIFF=ON \
-D WITH_FFMPEG=ON \
-D WITH_TBB=ON \
-D BUILD_TBB=ON \
-D WITH_GSTREAMER=ON \
-D BUILD_TESTS=OFF \
-D WITH_EIGEN=OFF \
-D WITH_V4L=ON \
-D WITH_LIBV4L=ON \
-D WITH_VTK=OFF \
-D WITH_QT=OFF \
-D OPENCV_ENABLE_NONFREE=ON \
-D INSTALL_C_EXAMPLES=OFF \
-D INSTALL_PYTHON_EXAMPLES=OFF \
-D BUILD_opencv_python3=TRUE \
-D OPENCV_GENERATE_PKGCONFIG=ON \
-D BUILD_EXAMPLES=OFF ..
OpenCV 4.5.3
$ 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 WITH_OPENMP=ON \
-D WITH_OPENCL=OFF \
-D BUILD_TIFF=ON \
-D WITH_FFMPEG=ON \
-D WITH_TBB=ON \
-D BUILD_TBB=ON \
-D WITH_GSTREAMER=ON \
-D BUILD_TESTS=OFF \
-D WITH_EIGEN=OFF \
-D WITH_V4L=ON \
-D WITH_LIBV4L=ON \
-D WITH_VTK=OFF \
-D WITH_QT=OFF \
-D OPENCV_ENABLE_NONFREE=ON \
-D INSTALL_C_EXAMPLES=OFF \
-D INSTALL_PYTHON_EXAMPLES=OFF \
-D BUILD_opencv_python3=TRUE \
-D OPENCV_GENERATE_PKGCONFIG=ON \
-D BUILD_EXAMPLES=OFF ..
OpenCV 4.5.2
$ 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 WITH_OPENMP=ON \
-D WITH_OPENCL=OFF \
-D BUILD_TIFF=ON \
-D WITH_FFMPEG=ON \
-D WITH_TBB=ON \
-D BUILD_TBB=ON \
-D WITH_GSTREAMER=ON \
-D BUILD_TESTS=OFF \
-D WITH_EIGEN=OFF \
-D WITH_V4L=ON \
-D WITH_LIBV4L=ON \
-D WITH_VTK=OFF \
-D WITH_QT=OFF \
-D OPENCV_ENABLE_NONFREE=ON \
-D INSTALL_C_EXAMPLES=OFF \
-D INSTALL_PYTHON_EXAMPLES=OFF \
-D BUILD_opencv_python3=TRUE \
-D OPENCV_GENERATE_PKGCONFIG=ON \
-D BUILD_EXAMPLES=OFF ..
OpenCV 4.5.1
$ 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 WITH_OPENMP=ON \
-D WITH_OPENCL=OFF \
-D BUILD_TIFF=ON \
-D WITH_FFMPEG=ON \
-D WITH_TBB=ON \
-D BUILD_TBB=ON \
-D BUILD_TESTS=OFF \
-D WITH_EIGEN=OFF \
-D WITH_GSTREAMER=ON \
-D WITH_V4L=ON \
-D WITH_LIBV4L=ON \
-D WITH_VTK=OFF \
-D WITH_QT=OFF \
-D OPENCV_ENABLE_NONFREE=ON \
-D INSTALL_C_EXAMPLES=OFF \
-D INSTALL_PYTHON_EXAMPLES=OFF \
-D BUILD_NEW_PYTHON_SUPPORT=ON \
-D BUILD_opencv_python3=TRUE \
-D OPENCV_GENERATE_PKGCONFIG=ON \
-D BUILD_EXAMPLES=OFF ..
OpenCV 4.5.0
$ 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 WITH_OPENMP=ON \
-D BUILD_TIFF=ON \
-D WITH_FFMPEG=ON \
-D WITH_TBB=ON \
-D BUILD_TBB=ON \
-D BUILD_TESTS=OFF \
-D WITH_EIGEN=OFF \
-D WITH_GSTREAMER=ON \
-D WITH_V4L=ON \
-D WITH_LIBV4L=ON \
-D WITH_VTK=OFF \
-D WITH_QT=OFF \
-D OPENCV_ENABLE_NONFREE=ON \
-D INSTALL_C_EXAMPLES=OFF \
-D INSTALL_PYTHON_EXAMPLES=OFF \
-D BUILD_NEW_PYTHON_SUPPORT=ON \
-D BUILD_opencv_python3=TRUE \
-D OPENCV_GENERATE_PKGCONFIG=ON \
-D BUILD_EXAMPLES=OFF ..
希望一切顺利,CMake 附带了一个类似于下面屏幕截图的报告。
编译
完成所有编译指令后,可以使用以下命令开始生成。这将需要一段时间(最少 1:30)。
$ make -j4
希望您的构建与下面的构建一样成功。
现在要完成,使用以下命令将所有生成的软件包安装到系统的数据库中。
$ sudo make install
$ sudo ldconfig
# cleaning (frees 300 KB)
$ make clean
$ sudo apt-get update
检查
现在是时候检查您在 Python 中的安装了。您可以使用命令,如下面的屏幕所示。这一切都不言自明。显然,如果您在虚拟环境中安装了 OpenCV,则需要首先使用命令 workon 激活此环境。
OpenCV 将安装到 /usr/local 目录下,所有文件都将复制到以下位置:
/usr/local/bin - 可执行文件
/usr/local/lib - libraries (.so)
/usr/local/cmake/opencv4 - cmake package
/usr/local/include/opencv4 - headers
/usr/local/share/opencv4 - 其他文件(例如 XML 格式的文件)
清空
首先要做的是将交换空间重置回其原始的 100 MB,如果您安装了 dphys-swapfile。闪存只能写入有限数量的周期。最后,它会磨损您的SD卡。因此,明智的做法是将内存交换保持在最低限度。此外,它还会减慢您的应用程序速度。这就是为什么我们更喜欢使用 zram,如 树莓派 4 64 位操作系统指南中所述。
$ sudo nano /etc/dphys-swapfile
set CONF_SWAPSIZE=100 with the Nano text editor
$ sudo reboot
如果磁盘空间不足,可以考虑删除 ~/opencv 和 ~/opencv_contrib 文件夹。通过命令 sudo make install,您已将所有标头和库复制到磁盘上的适当位置。不再需要 ~/opencv/build/ 文件夹中的原始文件。当然,例如,如果您启用了示例的构建,则无法删除文件夹,因为这也会删除这些示例。 这只是一个提示,节省了大约 1.5 GB 的空间。
# just a tip to save some space
$ sudo rm -rf ~/opencv
$ sudo rm -rf ~/opencv_contrib
转载来自:https://qengineering.eu/install-opencv-4.5-on-raspberry-64-os.html
|