热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

在树莓派2或树莓派B+上安装Python和OpenCV的教程

这篇文章主要介绍了在树莓派2或树莓派B+上安装Python和OpenCV的教程,主要基于GTK库,并以Python2.7和OpenCV2.4.X版本的安装作为示例,需要的朋友可以参考下
2015330151950565.jpg (690×555)我的Raspberry Pi 2昨天刚邮到,这家伙看上去很小巧可爱。

这小家伙有4核900MHZ的处理器,1G内存。要知道,Raspberry Pi 2 可比我中学电脑实验室里大多数电脑快多了。

话说,自从Raspberry Pi 2发布以来,我收到了很多请求,要求我能写一个在它上面安装OpenCV和Python的详细说明。

因此如果你想在Raspberry Pi启动运行OpenCV和Python,就往下面看!

在博文的剩余部分,我将提供在Raspberry Pi 2 和Raspberry Pi B+上的详细安装说明。

我也会说明每一步的安装耗时。其中一些步骤需要较多的处理时间。举个例子,在Raspberry Pi 2 编译OpenCV花费大概2.8小时,在 Raspberry Pi B+上则是9.5小时。所以请你据此安排你的安装吧。

最后,提醒一下我们会在PyImageSearch Gurus 计算机视觉课程中用到Raspberry Pi。我们的项目将会包括家庭监控应用,例如说房间里面的运动检测和人员跟踪。

下面是一个运动检测和跟踪的简单例子,当时我正打着电话在公寓里面来回走动。
2015330152053363.jpg (690×503)在 Raspberry Pi 2/B+上安装OpenCV和Python

这里假定你已经有了Raspberry Pi 2/B+,且已经安装好。如果没有的话,我建议你买一个,它们既便宜也好玩。

个人来说,我更愿意多花一点钱从Canakit买。他们的物流很快也比较可靠,加之他们的 ready-to-go服务也很好。

好吧,我们开始OpenCV和Python的安装
步骤0:

我们假定你已经打开Raspberry Pi 2/B+。打开终端,我们先更新和升级已安装的软件包,然后更新Raspberry Pi固件。

$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo rpi-update


步骤1:

安装所需的安装工具和包:

$ sudo apt-get install build-essential cmake pkg-config

build-essential 和 pkg-config可能都已经安装。以防万一,我们还是将它们键入apt-get命令中。

耗时:

Raspberry Pi B+:小于2分钟

Raspberry Pi 2:小于40秒
步骤2:

安装必要的图像I/O包,这样你才可以读入JPEG,PNG,TIFF等这些格式的图像。

$ sudo apt-get install libjpeg8-dev libtiff4-dev libjasper-dev libpng12-dev

耗时:

Raspberry Pi B+: 小于5钟

Raspberry Pi 2: 小于30秒
步骤3:

安装GTK开发库,这个库用来构建GUI。同时OpenCV中的highgui库也需要它来在屏幕上显示图像。

$ sudo apt-get install libgtk2.0-dev

耗时:

Raspberry Pi B+: 小于10分钟

Raspberry Pi 2:小于3分钟
步骤4:

安装必要的视频I/O包,OpenCV需要它们来读入视频文件。

$ sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev

耗时:

Raspberry Pi B+: 小于5分钟

Raspberry Pi 2: 小于30秒
步骤5:

安装OpenCV优化操作时所需库。

$ sudo apt-get install libatlas-base-dev gfortran

耗时:

Raspberry Pi B+:小于2分钟

Raspberry Pi 2:小于30秒
步骤6:

安装pip:

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

耗时:

Raspberry Pi B+:小于2分钟

Raspberry Pi 2:小于30秒
步骤7:

安装virtualenv和virtualenvwrapper

$ sudo pip install virtualenv virtualenvwrapper

然后,更新~/.profile文件如下:

export WORKON_HOME=$HOME/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh

重新载入.profile文件:

$ source ~/.profile

创建你的计算机视觉虚拟环境

$ mkvirtualenv cv

耗时:

Raspberry Pi B+: 小于2分钟

Raspberry Pi 2: 小于2分钟
步骤8:

现在我们安装Python 2.7开发工具:

$ sudo apt-get install python2.7-dev

注意:我们将使用Python2.7。因为OpenCV 2.4.X不支持Python 3,也不太清楚OpenCV 3.0的python接口什么时候才能完善。所以我建议现在还是使用OpenCV2.4.X的好。

我们也需要安装NumPy,因为OpenCV的Python接口通过Numpy的多维数组来表示图像。

$ pip install numpy

耗时:

Raspberry Pi B+: 小于45分钟

Raspberry Pi 2: 小于15分钟
步骤9:

下载和解压OpenCV:

$ wget -O opencv-2.4.10.zip http://sourceforge.net/projects/opencvlibrary/files/opencv-unix/2.4.10/opencv-2.4.10.zip/download
$ unzip opencv-2.4.10.zip
$ cd opencv-2.4.10

安装:

$ mkdir build
$ cd build
$ cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D BUILD_NEW_PYTHON_SUPPORT=ON -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON ..

耗时:

Raspberry Pi B+: 小于3分钟

Raspberry Pi 2: 小于1.5分钟

编译OpenCV:

$ make

重要:确定你在cv虚拟环境中,OpenCV也要根据该环境中的Python和NumPy中进行编译。否则的话,OpenCV就会和系统中的Python和NumPy编译在一起,会产生各种问题。

耗时:

Raspberry Pi B+: 小于 9.5 小时

Raspberry Pi 2: 小于2.8小时

最后,我们安装OpenCV:

$ sudo make install
$ sudo ldconfig

耗时:

Raspberry Pi B+: 小于 3分钟

Raspberry Pi 2: 小于1分钟
步骤10:

进行到这一步的时候,OpenCV已经应该已经安装到/usr/local/lib/python2.7/site-packages中了。

但是为了在cv虚拟环境中使用OpenCV,我们先需要符合链接到我们的site-packages目录:

$ cd ~/.virtualenvs/cv/lib/python2.7/site-packages/
$ ln -s /usr/local/lib/python2.7/site-packages/cv2.so cv2.so
$ ln -s /usr/local/lib/python2.7/site-packages/cv.py cv.py

步骤11:

最后,我们测试一下OpenCV和Python的安装:

$ workon cv
$ python
>>> import cv2
>>> cv2.__version__
'2.4.10'

OpenCV和Python已经成功安装到你的Raspberry Pi了。

这是在我的Raspberry Pi上的运行例子,我ssh登录到 Raspberry Pi,然后读取和显示一幅图像。
2015330152134961.jpg (690×450)总结

这篇博文中,我详细介绍了如何在Raspberry Pi 2 /Raspberry Pi B+上安装Python和OpenCV。也提供了他们的安装耗时,请酌情考虑你的安装。

随着Raspberry Pi的升级,安装指令可能有所变化。如果你遇到一些极端情况或安装指令的变化,请随时联系我。当然我也不能保证每封邮件都能回复,所以最好是将如何在 Raspberry Pi上安装OpenCV和Python的方法总结成一个列表。

不久以后,我会讲如何在Raspberry Pi操作其附加的camera。

在那之前,看看PyImageSearch Gurus计算机视觉课程。我们将在其中一些工程中用到Raspberry Pi,就比如说构建一个监控应用来进行房间内部的运动检测和人员跟踪。

推荐阅读
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • ZSI.generate.Wsdl2PythonError: unsupported local simpleType restriction ... [详细]
  • Python脚本编写创建输出数据库并添加模型和场数据的方法
    本文介绍了使用Python脚本编写创建输出数据库并添加模型数据和场数据的方法。首先导入相应模块,然后创建输出数据库并添加材料属性、截面、部件实例、分析步和帧、节点和单元等对象。接着向输出数据库中添加场数据和历程数据,本例中只添加了节点位移。最后保存数据库文件并关闭文件。文章还提供了部分代码和Abaqus操作步骤。另外,作者还建立了关于Abaqus的学习交流群,欢迎加入并提问。 ... [详细]
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • 生成对抗式网络GAN及其衍生CGAN、DCGAN、WGAN、LSGAN、BEGAN介绍
    一、GAN原理介绍学习GAN的第一篇论文当然由是IanGoodfellow于2014年发表的GenerativeAdversarialNetworks(论文下载链接arxiv:[h ... [详细]
  • MACElasticsearch安装步骤及验证方法
    本文介绍了MACElasticsearch的安装步骤,包括下载ZIP文件、解压到安装目录、启动服务,并提供了验证启动是否成功的方法。同时,还介绍了安装elasticsearch-head插件的方法,以便于进行查询操作。 ... [详细]
  • 推荐系统遇上深度学习(十七)详解推荐系统中的常用评测指标
    原创:石晓文小小挖掘机2018-06-18笔者是一个痴迷于挖掘数据中的价值的学习人,希望在平日的工作学习中,挖掘数据的价值, ... [详细]
  • 纠正网上的错误:自定义一个类叫java.lang.System/String的方法
    本文纠正了网上关于自定义一个类叫java.lang.System/String的错误答案,并详细解释了为什么这种方法是错误的。作者指出,虽然双亲委托机制确实可以阻止自定义的System类被加载,但通过自定义一个特殊的类加载器,可以绕过双亲委托机制,达到自定义System类的目的。作者呼吁读者对网上的内容持怀疑态度,并带着问题来阅读文章。 ... [详细]
  • 本文介绍了响应式页面的概念和实现方式,包括针对不同终端制作特定页面和制作一个页面适应不同终端的显示。分析了两种实现方式的优缺点,提出了选择方案的建议。同时,对于响应式页面的需求和背景进行了讨论,解释了为什么需要响应式页面。 ... [详细]
  • SpringBoot整合SpringSecurity+JWT实现单点登录
    SpringBoot整合SpringSecurity+JWT实现单点登录,Go语言社区,Golang程序员人脉社 ... [详细]
  • GSIOpenSSH PAM_USER 安全绕过漏洞
    漏洞名称:GSI-OpenSSHPAM_USER安全绕过漏洞CNNVD编号:CNNVD-201304-097发布时间:2013-04-09 ... [详细]
author-avatar
立行谏圣
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有