Raspbian Stretch:在你的Raspberry Pi上安装OpenCV 3 + Python

在运行Raspbian Stretch的Raspberry Pi 3上安装OpenCV 3

如果您曾经在Raspberry Pi(或之前的任何其他平台)上安装过OpenCV,那么您知道该进程可能非常耗时且需要安装许多依赖项和先决条件。本教程的目标是引导您逐步完成编译和安装过程。

为了使安装过程更加顺利,我将每个步骤的时间安排在一起,以便您在Pi编译OpenCV时知道何时休息一下,喝杯咖啡并检查电子邮件。

让我们继续,开始在运行Raspbian Stretch的Raspberry Pi 3上安装OpenCV 3。

步骤1:展开文件系统

您是否使用全新的Raspbian Stretch安装?

如果是这样,你应该做的第一件事是扩展你的文件系统,以包括你的micro-SD卡上的所有可用空间

Raspbian Stretch: Install OpenCV 3 + Python on your Raspberry Pi
Shell
1
$ sudo raspi - config

然后选择“高级选项”菜单项:

图1:从“ raspi-config ”菜单中选择“ 高级选项 ”项

接下来选择“扩展文件系统”:

图2:扩展Raspberry Pi 3上的文件系统。

然后重新启动Pi - 可能会提示您重新启动,但如果不是,则可以执行:

重新启动后,您的文件系统应该已经扩展到包含micro-SD卡上的所有可用空间。您可以验证该盘已被执行扩展 DF ^ h 和检查的输出:

正如你所看到的,我的Raspbian文件系统已经扩展到包含所有32GB的micro-SD卡。

但是,即使扩展了我的文件系统,我也已经使用了32GB卡的15%。

如果您使用的是8GB存储卡,则可能会占用50%的可用空间,所以一件简单的事情就是删除LibreOffice和Wolfram引擎,以释放Pi上的一些空间:

删除Wolfram引擎和LibreOffice后,您可以回收近1GB!

步骤#2:安装依赖关系

这并不是我第一次讨论如何在Raspberry Pi上安装OpenCV,因此我将简要介绍这些说明,以便您完成安装过程:我还包括了时间它需要执行每个命令(一些取决于您的Internet速度),因此您可以相应地规划OpenCV + Raspberry Pi 3的安装(OpenCV本身需要大约4个小时才能编译 - 稍后会有更多内容)。

第一步是更新和升级任何现有的软件包:

时间:2分14秒

然后,我们需要安装一些开发工具,包括CMake,它可以帮助我们配置OpenCV构建过程:

时机:19秒

接下来,我们需要安装一些图像I / O包,允许我们从磁盘加载各种图像文件格式。这种文件格式的例子包括JPEG,PNG,TIFF等:

时机:21秒

就像我们需要图像I / O包一样,我们也需要视频I / O包。这些库允许我们从磁盘读取各种视频文件格式,并直接处理视频流:

时机:32s

OpenCV库附带一个名为highgui的子模块 ,用于在我们的屏幕上显示图像并构建基本的GUI。为了编译 highgui模块,我们需要安装GTK开发库:

时间:1分36秒

OpenCV中的许多操作(即矩阵操作)可以通过安装一些额外的依赖关系进一步优化:

时机:23秒

这些优化库对于资源受限设备(如Raspberry Pi)尤为重要

最后,让我们安装Python 2.7和Python 3头文件,以便我们可以用Python绑定来编译OpenCV:

时间:45s

如果您正在全新安装操作系统,那么这些版本的Python可能已经是最新版本了(您会看到终端消息指出了这一点)。

步骤#3:下载OpenCV源代码

现在我们已经安装了依赖项,让我们从官方的OpenCV仓库中获取OpenCV 的 3.3.0归档这个版本包含了  我们在之前的文章中讨论过的 dnn模块,我们使用OpenCV进行了深度学习注意:随着未来版本的openCV的发布,您可以用最新版本号替换 3.3.0):

时机:41秒

我们需要完整安装 OpenCV 3(例如,可以访问SIFT和SURF等功能),因此我们还需要获取opencv_contrib存储库:

时机:37s

在复制和粘贴期间,您可能需要使用“<=>”按钮来扩展上面的命令。OpenCV 3.3.0归档的完整URL是:

https://github.com/Itseez/opencv_contrib/archive/3.3.0.zip

注意:确保您的 opencv和 opencv_contrib版本相同。如果版本号不匹配,那么您可能会遇到编译时错误或运行时错误。

步骤#4:Python 2.7或Python 3?

在我们开始在我们的Raspberry Pi 3上开始编译OpenCV之前,我们首先需要安装 Python包管理器pip

时机:33秒

您可能会收到一条消息,指出在发出这些命令时pip已经是最新的,但最好不要跳过这一步。

如果你是一个长期的PyImageSearch读者,那么你就会知道,我是一个巨大的风扇两者的virtualenvvirtualenvwrapper安装这些软件包并不是必需的,你绝对可以在没有它们的情况下安装OpenCV,但是,我强烈建议你安装它们,因为其他现有的PyImageSearch教程(以及未来的教程)也可以利用Python虚拟环境。我也会假设你已经在本指南的其余部分安装virtualenv和 virtualenvwrapper

那么,鉴于此,使用 virtualenv和 virtualenvwrapper有什么意义?

首先,了解虚拟环境是一种特殊的工具,通过为每个环境创建独立的,独立的 Python环境来保持不同项目所需的依赖关系,这一点很重要

总之,它解决了“Project X取决于版本1.x,但项目Y需要4.x”的困境。

Python社区标准做法是使用某种虚拟环境,所以我强烈建议您也这样做:

时机:35s

既然 virtualenv和 virtualenvwrapper已经安装好了,我们需要更新我们的文件在文件底部包含以下行

在之前的教程中,我建议使用您最喜欢的基于终端的文本编辑器(例如 vim, emacsnano)来更新 配置文件。如果您对这些编辑感到满意,请继续并更新文件以反映上述更改。

否则,您应该简单地使用 cat并输出重定向来处理更新 

现在我们有了 配置文件已更新,我们需要重新加载它以确保更改生效。你可以强制重新加载你的 配置文件通过:

  1. 注销然后重新登录。
  2. 关闭一个终端实例并打开一个新实例
  3. 或者我个人最喜欢的,只需使用 source命令:

注:我建议在运行  每次打开一个新的终端以确保您的系统变量已正确设置时,这个配置文件就可以被使用。

创建你的Python虚拟环境

接下来,我们来创建我们将用于计算机视觉开发的Python虚拟环境:

该命令将使用Python 2.7创建一个名为cv的新Python虚拟环境 

如果您不想使用Python 3,则需要使用此命令:

时间:24s

同样,我不能强调这一点就够了:在 CV Python的虚拟环境是完全独立的,隔离来自包括在下载Raspbian拉伸的默认Python版本。全局 中的任何Python软件包软件包目录都不可用于 cv虚拟环境。同样地,安装在任何Python包 当你在你的Python虚拟环境中工作时,记住这一点,这将有助于避免很多混乱和麻烦。

如何检查您是否在“cv”虚拟环境中

如果你曾经重启你的树莓派; 注销并重新登录; 或者打开一个新的终端,您需要使用 workon命令重新访问 cv虚拟环境。在以前的博客文章中,我已经看到读者使用 mkvirtualenv命令 - 这完全是不必要的!该 mkvirtualenv命令是为了只执行一次:实际上创建虚拟环境。

之后,您可以使用 workon然后将其放入虚拟环境中:

为了验证并确保你在 虚拟环境中,检查您的命令行- 如果你看到的文字 CV 提示符之前,那么你在 CV虚拟环境:

图3:请确保您看到“ (CV)在你的提示”的文字,表示你在CV虚拟环境。

否则,如果你没有看到 CV 的文本,那么你是不是在 CV虚拟环境:

图4:如果你没有看到“ (CV) ”你的提示文字,那么你 不是在CV虚拟环境,并需要运行“  ”和“ workon ”来解决这个问题。

要解决这个问题,只需执行上面提到的 source和 workon命令即可。

在你的Raspberry Pi上安装NumPy

假设你已经做到了这一点,你现在应该在 cv虚拟环境中(你应该留在本教程的其余部分)。我们唯一的Python依赖是NumPy,一个用于数值处理的Python包:

时间:11分12秒

一定要拿一杯咖啡或去散步,NumPy的安装可能需要一些时间。

注意:我经常看到的一个问题是“帮助,我的NumPy安装已经挂起,而且没有安装!”实际上,它正在安装,只需要一段时间就可以停止源代码并进行编译。你可以通过运行top来验证NumPy是否正在编译和安装  。在这里你会看到你的CPU周期正在用于编译NumPy。耐心一点。树莓派不如您的笔记本电脑/台式机。

步骤#5:编译并安装OpenCV

我们现在准备编译和安装OpenCV!通过检查您的提示(您应该看到前面cv 文本),仔细检查您是否在 cv虚拟环境中 ,如果没有,请执行 workon

一旦你确定你在 cv虚拟环境中,我们可以使用CMake来设置我们的版本:

时间:2米56秒

现在,在我们转到实际的编译步骤之前,请确保您检查CMake的输出!

首先向下滚动标题为 Python 2 和 Python 3的部分 

如果您正在为Python 2.7编译OpenCV 3,请确保您的 Python 2 部分包含解释器, numpy和 路径的有效路径 ,类似于以下屏幕截图:

图6:在Raspberry Pi 3上编译OpenCV 3用于Raspbian Stretch时将检查使用Python 3。

注意解释器是如何 指向我们的 python2.7二进制位于 cv虚拟环境中。该 numpy的变量还指出,与NumPy安装在 CV环境。

同样,如果您正在编译Python 3的OpenCV,请确保 Python 3 部分如下图所示:

图6:在Raspberry Pi 3上编译OpenCV 3用于Raspbian Stretch时将检查使用Python 3。

解释器再次 指向我们的 python3.5二进制位于 cv虚拟环境中,而 numpy指向我们的NumPy安装。

无论哪种情况,如果在这些变量路径中没有看到 cv虚拟环境,那几乎可以肯定是因为在运行CMake之前,您并不在 cv虚拟环境中!

如果是这种情况,请使用workon cv访问 cv虚拟环境, 然后重新运行上述 cmake命令。

编译前配置交换空间大小

在开始编译过程之前,您应该  增加交换空间大小这使OpenCV能够 Raspberry PI的所有四个核心进行编译,而不会由于内存问题而停止编译。

打开你的 sudo  nano /etc/dphys-swapfile   然后编辑 CONF_SWAPSIZE   变量:

请注意,我已经注释了100MB行,并添加了1024MB行。这是使用Raspbian Stretch进行多核编译的秘诀。

如果你跳过这一步,OpenCV可能无法编译。

要激活新的交换空间,请重新启动交换服务:

注意:因为闪存的写入次数有限,所以可能会烧毁Raspberry Pi microSD卡,直到卡无法工作为止。这是  强烈建议您更改此设置恢复到默认你完成编译和测试安装(见下文)时。要详细了解破坏内存的交换大小,请参阅此页面。

最后,我们现在准备编译OpenCV:

时间:1小时30分钟

一旦OpenCV 3完成编译,你的输出应该类似于我的下面:

图7: Raspbian Stretch上的OpenCV 3编译已成功完成。

从那里,你需要做的就是在你的Raspberry Pi 3上安装OpenCV 3:

时机:52s

步骤#6:完成在您的Pi上安装OpenCV

我们差不多完成了 - 只需再走几步,您就可以在Raspbian Stretch上使用OpenCV 3的Raspberry Pi 3了。

对于Python 2.7:

如果您的第5步完成没有错误,OpenCV现在应该安装在 /usr/local/lib/python2.7/site-packages/您可以使用ls命令来验证它 

注意:在某些情况下,OpenCV可以安装在 /usr/local/lib/python2.7/dist-packages/(注意 dist packages而不是 site packages  )。

我们的最后一步是符号链接 OpenCV的绑定到我们的 品种为Python 2.7的虚拟环境:

对于Python 3:

运行 make install之后,您的OpenCV + Python绑定应安装在/usr/local/lib/python3.5/site-packages再次,您可以使用ls命令验证这一点 

我真的不知道为什么,也许这是CMake脚本中的一个错误,但是在为Python 3+编译OpenCV 3绑定时,输出 所以文件被命名为 cv2.cpython-35m-arm-linux-gnueabihf.so cv2.so所以(或某种变体)而不是简单的 cv2.so(如在Python 2.7绑定中)。

同样,我不确定发生这种情况的确切原因,但这很容易解决。我们所需要做的就是重命名文件:

我们可以将我们的OpenCV绑定对应到Python 3.5 的 cv虚拟环境中:

步骤#7:测试你的OpenCV 3安装

恭喜,您现在已经在运行Raspbian Stretch的Raspberry Pi 3上安装了OpenCV 3!

但是在我们捧起香槟喝醉我们的胜利之前,我们先来验证一下你的OpenCV安装是否正常。

打开一个新的终端,执行 source和 workon命令,然后尝试导入Python + OpenCV绑定:

从我自己的终端的屏幕截图中可以看到,OpenCV 3已成功安装在Raspberry Pi 3 + Python 3.5环境中:

图8:确认OpenCV 3已成功安装在运行Raspbian Stretch的Raspberry Pi 3上。

一旦安装了OpenCV,您可以删除 opencv 3.3.0和 opencv_contrib 3.3.0目录以释放磁盘上的一堆空间:

但是,请谨慎使用此命令!确保在吹走这些目录之前OpenCV已经正确安装在您的系统上。这里的一个失误就可能花费你时间 在编译的时候。

不要忘记更换你的交换大小!

打开你的  sudo  nano /etc/dphys-swapfile   然后编辑  CONF_SWAPSIZE   变量:

请注意,我已经注释掉了1024MB行,并取消了100MB行的注释。

如果你跳过这一步,你的记忆卡将不会持续很长时间。 如上所述,更大的交换空间可能导致内存损坏,所以我建议将其设置回100MB。

要恢复到较小的交换空间,请重新启动交换服务:




  • 8
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值