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


Posted in Python onMarch 30, 2015

在树莓派2或树莓派B+上安装Python和OpenCV的教程我的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。我们的项目将会包括家庭监控应用,例如说房间里面的运动检测和人员跟踪。

下面是一个运动检测和跟踪的简单例子,当时我正打着电话在公寓里面来回走动。
在树莓派2或树莓派B+上安装Python和OpenCV的教程在 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,然后读取和显示一幅图像。
在树莓派2或树莓派B+上安装Python和OpenCV的教程总结

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

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

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

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

Python 相关文章推荐
Python中动态获取对象的属性和方法的教程
Apr 09 Python
Python全局变量操作详解
Apr 14 Python
Python 实现简单的shell sed替换功能(实例讲解)
Sep 29 Python
django模型层(model)进行建表、查询与删除的基础教程
Nov 21 Python
Python cookbook(数据结构与算法)找到最大或最小的N个元素实现方法示例
Feb 13 Python
Python中 传递值 和 传递引用 的区别解析
Feb 22 Python
python 实现数组list 添加、修改、删除的方法
Apr 04 Python
python 利用pandas将arff文件转csv文件的方法
Feb 12 Python
Django对数据库进行添加与更新的例子
Jul 12 Python
python安装scipy的步骤解析
Sep 28 Python
Python jieba库用法及实例解析
Nov 04 Python
Python 实现一行输入多个数字(用空格隔开)
Apr 29 Python
Python中利用函数装饰器实现备忘功能
Mar 30 #Python
利用Python绘制MySQL数据图实现数据可视化
Mar 30 #Python
Python面向对象编程中的类和对象学习教程
Mar 30 #Python
详细介绍Python函数中的默认参数
Mar 30 #Python
在Python中利用Into包整洁地进行数据迁移的教程
Mar 30 #Python
在Linux上安装Python的Flask框架和创建第一个app实例的教程
Mar 30 #Python
使用Python中PDB模块中的命令来调试Python代码的教程
Mar 30 #Python
You might like
php Hex RGB颜色值互换的使用
2013/05/10 PHP
PHP laravel中的多对多关系实例详解
2017/06/07 PHP
javascript 设计模式之单体模式 面向对象学习基础
2010/04/18 Javascript
设置jsf的选择框h:selectOneMenu为不可编辑状态的方法
2014/01/07 Javascript
深入理解javascript严格模式(Strict Mode)
2014/11/28 Javascript
JavaScript程序开发之JS代码放置的位置
2016/01/15 Javascript
第十章之巨幕页头缩略图与警告框组件
2016/04/25 Javascript
Javascript中字符串相关常用的使用方法总结
2017/03/13 Javascript
利用canvas实现的加载动画效果实例代码
2017/07/05 Javascript
Vue2 Vue-cli中使用Typescript的配置详解
2017/07/24 Javascript
Angular移动端页面input无法输入的解决方法
2017/11/14 Javascript
webpack+vuex+axios 跨域请求数据的示例代码
2018/03/06 Javascript
Vue 路由 过渡动效 数据获取方法
2018/07/31 Javascript
jQuery实现参数自定义的文字跑马灯效果
2018/08/15 jQuery
对angular 实时更新模板视图的方法$apply详解
2018/10/09 Javascript
Vue项目安装插件并保存
2019/01/28 Javascript
el-input 标签中密码的显示和隐藏功能的实例代码
2019/07/19 Javascript
微信小程序 简易计算器实现代码实例
2019/09/02 Javascript
vue项目中锚点定位替代方式
2019/11/13 Javascript
Windows下安装 node 的版本控制工具 nvm
2020/02/06 Javascript
[43:36]Liquid vs Mineski 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
[47:03]完美世界DOTA2联赛PWL S3 Galaxy Racer vs Phoenix 第二场 12.10
2020/12/13 DOTA
浅谈Python的异常处理
2016/06/19 Python
python将.ppm格式图片转换成.jpg格式文件的方法
2018/10/27 Python
利用Python查看微信共同好友功能的实现代码
2019/04/24 Python
解决pyshp UnicodeDecodeError的问题
2019/12/06 Python
Django 设置多环境配置文件载入问题
2020/02/25 Python
python GUI库图形界面开发之pyinstaller打包python程序为exe安装文件
2020/02/26 Python
python爬虫构建代理ip池抓取数据库的示例代码
2020/09/22 Python
HTML5拖放API实现拖放排序的实例代码
2017/05/11 HTML / CSS
新西兰廉价汽车租赁:Snap Rentals
2018/09/14 全球购物
Bose美国官网:购买Bose耳机和音箱
2019/03/10 全球购物
班级安全教育实施方案
2014/02/23 职场文书
小学清明节活动方案
2014/03/08 职场文书
小学体育跳绳课教学反思
2016/02/16 职场文书
zabbix监控mysql的实例方法
2021/06/02 MySQL