Adrian Rosebrock:如何在Raspberry Pi上安装OpenCV3(pip 安装)

本博客为翻译博客,且使用的是谷歌翻译,原文地址如下:https://www.pyimagesearch.com/2018/09/19/pip-install-opencv/

前言

    最近想要用树莓派+树莓派摄像头+opencv做些事情,一开始用的opencv2(因为安装方便,其实是网上资料丰富且成熟)。但发现用opencv2做人脸识别的时候,延时很高。在网上看了看说opencv3的效率比opencv2要高一些,就决定试试。找了半天只找到几个源码安装的教程(而且基本上是翻译或参考Adrian Rosebrock写的博客),按照教程在编译的时候失败了...

[ 95%] Building CXX object modules/stitching/CMakeFiles/opencv_stitching_pch_dephelp.dir/opencv_stitching_pch_dephelp.cxx.o
In file included from /home/pi/opencv-3.3.0/modules/stitching/include/opencv2/stitching.hpp:49:0,
                 from /home/pi/opencv-3.3.0/modules/stitching/src/precomp.hpp:59,
                 from /home/pi/opencv-3.3.0/build/modules/stitching/opencv_stitching_pch_dephelp.cxx:1:
/home/pi/opencv-3.3.0/modules/stitching/include/opencv2/stitching/detail/matchers.hpp:52:42: fatal error: opencv2/xfeatures2d/cuda.hpp: 没有那个文件或目录
 #  include "opencv2/xfeatures2d/cuda.hpp"
                                          ^
compilation terminated.

    百度了半天也没有解决,最终在Adrian Rosebrock的博客下找到了解决办法。然后就有了下面的这篇翻译博客。想想也是都9102年了,怎么会没有方便的安装方式呢。不过百度的绝大部分都是源码安装的,我也是很无奈。国内二进制安装会因为网速问题失败,目前我也没有找到好的办法。只能多试几次了。

 

如何在Raspberry Pi上安装OpenCV

在这篇文章的前面我提到安装OpenCV的一个缺点是你没有对编译本身的任何控制 - 二进制文件是为你预先构建的,虽然很好,但也意味着你不能包含任何额外的优化。

对于Raspberry Pi,我们很幸运。

Dave Jonespicamera   Python模块的创建者 )和Raspberry Pi社区的Ben Nuttall运行piwheels.org,这是一个Python包存储库,为Raspberry Pi 提供ARM轮子(即预编译的二进制包)。

使用PiWheels,您将能够在几秒钟内完成安装OpenCV(对于可能需要很长时间编译的其他Python库也是如此,包括NumPy,SciPy,scikit-learn等)。

那么如何指示pip命令使用PiWheels?

简短的回答是“没什么!”

如果您正在使用Raspbian Stretch,您会很高兴地知道pip命令会检查PyPI 之前检查PiWheels是否有预编译的二进制文件,从而使您的Pi能够节省大量CPU周期(并且您需要一堆安装时间) )。

此外,当Ben和Dave为PiWheels整合OpenCV二进制文件时,他们问我应该使用哪些指令 - 我建议我为Raspberry Pi安装优化的OpenCV - 这正是他们遵循的指令!

如果您最终使用pip在Raspberry Pi上安装OpenCV,请放心,您正在使用优化版本。

让我们开始学习如何在我们的Raspberry Pi上安装OpenCV。

在Raspberry Pi上安装必备组件

Raspberry Pi要求您在开始之前安装一些系统软件包:

pip install opencv

Shell

 

1

2

3

4

$ sudo apt-get install libhdf5-dev libhdf5-serial-dev libhdf5-100

$ sudo apt-get install libqtgui4 libqtwebkit4 libqt4-test python3-pyqt5

$ sudo apt-get install libatlas-base-dev

$ sudo apt-get install libjasper-dev

 

在你的Raspberry Pi上安装pip

Python包管理器“pip”可以通过wget获得:

pip install opencv

Shell

 

1

2

$ wget https://bootstrap.pypa.io/get-pip.py

$ sudo python3 get-pip.py

现在您有两个选择:

  1. 将OpenCV安装到您的全局Python 站点-   Raspberry Pi上的软件包
  2. 将OpenCV安装到Raspberry Pi上的虚拟环境中

选项A:使用pip将OpenCV安装到Raspberry Pi系统

如果您希望能够在隔离环境中使用不同版本的OpenCV,我不建议使用此选项。

但是很多人只为一个目的/项目部署他们的Raspberry Pis,并且不需要虚拟环境。

话虽如此,如果您以后改变主意并希望使用虚拟环境,清理起来相当混乱,因此我建议您跳过此选项并按照选项B进行操作

要在Raspberry Pi系统上安装OpenCV,请务必使用sudo:

pip install opencv

Shell

 

1

$ sudo pip install opencv-contrib-python

只需几秒钟,OpenCV就可以使用Raspberry Pi的站点包以及您可能安装的任何其他软件包。

选项B:在Raspberry Pi上使用pip将OpenCV安装到虚拟环境中

如果你的Raspberry Pi有多种用途(或者如果你像我一样,并且不断测试各种软件版本的博客文章之间的代码兼容性?),那么虚拟环境肯定是要走的路。

以下是如何安装virtualenv和virtualenvwrapper,我用它来完成它的工具:

pip install opencv

Shell

 

1

$ pip install virtualenv virtualenvwrapper

然后你需要在.profile中添加以下行  。使用nano  , vim  或 emacs打开文件   ,并将这些行追加到末尾:

pip install opencv

Shell

 

1

2

3

4

# virtualenv and virtualenvwrapper

export WORKON_HOME=$HOME/.virtualenvs

export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3

source /usr/local/bin/virtualenvwrapper.sh

注意:请注意,对于Raspberry Pi,我们正在编辑.profile ... not /.bash_profile   (macOS)或 .bashrc   (Ubuntu)。  

保存文件。然后在您的终端中“获取它”:

pip install opencv

Shell

 

1

$ source ~/.profile

将打印终端输出,表明virtualenvwrapper已准备就绪。务必检查错误。

您现在可以访问新的终端命令:

  • 使用mkvirtualenv创建环境  。
  • 使用workon激活环境(或切换到另一个环境)  。
  • 使用deactivate取消激活环境  。
  • 使用rmvirtualenv删除环境  。
  • 一定要阅读文档

要  创建一个容纳OpenCV和您安装的其他软件包的Python 3虚拟环境,只需使用mkvirtualenv和以下命令:

pip install opencv

Shell

 

1

$ mkvirtualenv cv -p python3

现在您有一个名为cv的虚拟环境  。您可以随时通过以下方式激活它:

pip install opencv

Shell

 

1

$ workon cv

现在只需翻转一下手腕,就可以将OpenCV安装到 cv中  :

pip install opencv

Shell

 

1

$ pip install opencv-contrib-python

这就是使用PiWheels的全部内容!

我敢打赌你正在使用PiCamera作为成像传感器。您可以使用以下命令安装Python模块(只需记下引号):

pip install opencv

Shell

 

1

$ pip install "picamera[array]"

 

测试我们的OpenCV pip安装

您是否知道OpenCV的3.3+具有可以运行深度学习模型的DNN模块?

您可能会感到惊讶,但您的OpenCV版本现在可以开箱即用,几乎没有其他软件。

我们将使用MobileNet单击检测器在视频中执行对象检测

这是您首先需要安装的(假设一个 cv   虚拟环境):

pip install opencv

Python

 

1

2

3

$ workon cv

$ pip install imutils

$ pip install "picamera[array]" # if you're using a Raspberry Pi

现在通过打开Python shell仔细检查您是否已准备好所有软件:

pip install opencv

Shell

 

1

2

3

4

5

6

7

8

9

10

$ workon cv

$ python

Python 3.6.3 (default, Oct  4 2017, 06:09:15)

[GCC 4.2.1 Compatible Apple LLVM 9.0.0 (clang-900.0.37)] on darwin

Type "help", "copyright", "credits" or "license" for more information.

>>> import cv2

>>> cv2.__version__

'4.0.1'

>>> import imutils

>>>

Raspberry Pi将展示不同版本的Python 3,这是预期的。

现在是下载代码的时候了。

请务必使用此博客文章的“下载”部分下载源代码+预先培训的MobileNet SSD神经网络。

从那里,执行以下命令:

pip install opencv

Shell

 

1

2

3

4

5

6

7

$ python real_time_object_detection.py \

--prototxt MobileNetSSD_deploy.prototxt.txt \

--model MobileNetSSD_deploy.caffemodel

[INFO] loading model...

[INFO] starting video stream...

[INFO] elapsed time: 55.07

[INFO] approx. FPS: 6.54

 

图X:使用深度学习和OpenCV进行实时对象检测的简短剪辑

 

我正在使用Macbook Pro。在笔记本电脑上使用CPU时,帧速率为6 FPS非常好。

Raspberry Pis资源紧张,因此我们可以利用一些技巧来创造更高FPS的幻觉。如果您使用的是  Raspberry Pi,请执行以下命令:

pip install opencv

Shell

 

1

2

3

4

5

6

7

8

$ python pi_object_detection.py \

--prototxt MobileNetSSD_deploy.prototxt.txt \

--model MobileNetSSD_deploy.caffemodel

[INFO] loading model...

[INFO] starting process...

[INFO] starting video stream...

[INFO] elapsed time: 48.55

[INFO] approx. FPS: 27.83

 

在这里,我在Raspberry Pi上创建了快速27 FPS的幻觉,而后台的神经网络只能处理0.9 FPS

这怎么可能?

线程和队列。

它有点先进,但如果您阅读原始博客文章  (对于Raspberry Pi),您将理解该过程。此外,您将能够给您的朋友和家人留下深刻印象。

使用pip安装OpenCV时需要注意什么

首先,并非所有Python发行版都具有可以进行pip安装的OpenCV版本。

较新版本的Python和较新的操作系统(更不用说已经达到其使用寿命的旧版本)可能没有准备好进入PyPI存储库的OpenCV版本,因为开源社区没有机会发布这样的版本呢。

在这些情况下,您可以:

  1. 等到上传Python和OS组合的二进制文件。
  2. 或者我的建议是什么 - 从源代码编译(UbuntumacOSRPi)。

其次,包括Anaconda用户在内的一些读者报告了使用cv2等GUI功能的问题 imshow   和cv2 waitKey  。

在这些场景中,OpenCV会错误地说它没有使用GTK或QT支持进行编译。

简单的说:

  • 您将能够使用所有其他OpenCV函数,但您将无法使用任何GUI函数,尤其是highgui模块中的函数。
  • 这里的解决方案是从源代码编译(UbuntumacOSRPi)。

第三,我知道读者  在他们的终端,Jupyter笔记本或Python shell中执行import cv2 时报告了问题 - 这不是OpenCV的pip安装问题

在大多数情况下,但不是所有情况下,错误与您实际安装的OpenCV无关。

相反,您更了解某些组合的问题:

  1. 已执行的命令以及如何正确使用它们。
  2. 认为命令正确执行但导致错误。
  3. 无法访问您的Python虚拟环境(如果您使用的话)。

在报告导入cv2   绑定的问题之前,您需要仔细检查命令,重复这些步骤并仔细检查输出 。

最后,将通过pip安装的OpenCV版本 不包括“非自由”算法,如SIFT,SURF和其他专利算法。如果您不需要使用专利算法,那么您就是金色的。否则,我建议您通过我的系统安装教程之一从源代码编译OpenCV 。

摘要

在今天的教程中,您学习了如何在操作系统上安装OpenCV。

具体来说,我们介绍了如何通过pip在Ubuntu,macOS和Raspberry Pi上安装OpenCV。

虽然通过pip安装OpenCV可能是让您入门的最简单方法,但请记住,您可能会遇到其他问题。

如果您发现自己在使用OpenCV的pip安装时遇到错误或问题,请务必参阅此博客文章中的“使用pip安装OpenCV时需要注意的事项”部分。

我希望你喜欢今天的教程!

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值