这是在PyImageSearch上Adrian Rosebrock写的一篇在
Raspberry Pi
上安装 OpenCV 的教程, 感觉写的还蛮详细的, 当然文章里面的操作不只适用Raspberry Pi
,Debian
系应该能直接用下面的shell
命令来安装.
如果想尽快安装,直接看shell代码,文字不用看
老实说, 我很喜欢用 Raspberry Pi
来做 Computer Vision
的教学工作. 对于全世界做 CV
的老师, 学生, 程序员来说, Raspberry Pi 可能是最好的工具, 有之一的.
这是一块很便宜的开发板, 虽然便宜但不能代表它不能做很多有趣的事. 对于爱好者和车库里的黑客来说,这玩意还是超级赞的. 如果你做项目, 能够在一块很便宜又不失可靠的硬件板子把 CV
的算法跑起来, 是不是很屌? 这玩意儿在研究学术界也是被广泛推崇和应用的. 鉴于它这么低廉的价格, 我们完全可以用一批 Raspberry Pi
, 部署一个集群来做 CV
的研究.
由于它这些牛逼的特性, 又能在各个领域一显身手, 肯定一得很大一批人的芳心. 难怪我 在 PyImageSearch 上的这篇简明教程: installing OpenCV and Python on your Raspberry Pi 2 and B+, 能一直保持浏览数第一.
估计那篇文章好景不长, 我现在这篇文章可能会勇夺桂冠, 跃居榜首.所谓后来者居上嘛.
下面我就来一步步地教大家怎么在树莓派给 Python 2.7
和 Python 3.+
安装 Open CV 3.0
(发行
).
跟着我一步步来操作, 最后你肯定 在树莓派上 安装好了 Open CV 3.0
库, 只是 Python 3+
和 Python 2.7+
的区别而已. 这绝逼是一个很刺激的教程, 为啥呢? Open CV 库目前是依赖 Python 2.7
的, 不过对于 Open CV 3.0
我要发大招让它也能在 我的 Python 3+
上妥妥的跑起来.
你肯定在PyImageSearch上的某个阴暗的角落里, 看到过 在树莓派上 用 Open CV
来做的一些牛逼项目, 比如: automated home surveillance and security system ,用的是 Python + OpenCV + Dropbox + Raspberry Pi 2:
看到这些是不是内心激动难耐, 那么跟着我接着干吧.
在 Raspberry Pi 2 上 Python 2.7+ 和 Python 3+ 安装OpenCV 3.0
前方高能!!! 安装,大家可以直接看shell命令
下面会详细地介绍如何 给Pi 2 安装 Open CV 3.0
for Python 2.7+
和 Python 3+
. Pi B+
也是适用的哦! 不过, 我还是推荐大家用 Pi 2
, 毕竟新出来的, 性能提升了不少, 用来做 CV
不会觉得很蛋疼.
为了让教程简介明了, 我把具体内容大致分为了四个步骤, 大家一步步来:
-
步骤一: 安装依赖. 不管你是用
Python 2.7+
还是Python 3+
, 你都需要用apt-get
来安装 安装Open CV
所需要的包,库等依赖. -
步骤二: 编译
Python 2.7+
版的Open CV
. 如果你准备用Python 2.7
那么这一步你肯定要做的, 做完之后呢, 你就可以跳过步骤三, 直奔步骤四. -
步骤三: 编译
Python 3+
版的Open CV
. 同样地, 你准备用Python 3+
的话, 步骤二是不用做的, 直接从步骤一来到这里. -
步骤四: 确认安装成功. 在你安装完成之后, 这一步骤就来确认
Open CV
是否安装成功, 能不能正常地工作.
Python 2.7+ 还是 Python 3+?
在开始正式安装之前, 你需要搞清楚你到底是要安装哪一个版本的.
反正两个版本各有利弊吧. 你自己选择一个你看着顺眼的, 这个真没有什么特别的不同. 如果你觉得用着Python 3+
舒服, 你就选择 Python 3+
, Python 2.7+
用习惯了, 你就装 Python 2.7+
版本的. 但是如果你平时用 Python
来做一些CS
相关的开发, 譬如: Machine Learning
, Data Mining
, NLP
, 或者 Deep Learning
, 你可能会更倾向于选择 Python 2.7
, 至少目前是这样的情况. 这些方面的大部分库和包都是 Python 2.7+
的, 譬如: NumPy, Scipy 和 scikit-learn, 虽然社区里面都在努力地向 Python 3+
迁移, 但是有那么一部分还是只能在 Python 2.7+
下稳定工作的 .
步骤一: 安装包依赖
下面我们就开始 Open CV
安装的第一步吧.
耗时:9m 5s
sudo apt-get update
sudo apt-get upgrade
sudo rpi-update
下面我们安装从源码构建 Open CV
的相关工具:
耗时: 43s
sudo apt-get install build-essential git cmake pkg-config
加载不同格式图片的工具包:
**耗时: ** 27s
sudo apt-get install libjpeg8-dev libtiff4-dev libjasper-dev libpng12-dev
视频流 I/O 包
**耗时: ** 26s
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
GTK, 给图形界面操作用的
**耗时: ** 2m 20s
sudo apt-get install libgtk2.0-dev
安装下面的包可以在 Open CV
里面优化各种函数
**耗时: **46s
sudo apt-get install libatlas-base-dev gfortran
现在, 我们的准备工作完成了. 接下来我们从 Github
上把 Open CV
的源码 pull
下来, 然后切换到新的版本 3.0.0
.
**耗时: ** 8m 34s
译者注: 前面时间还基本大差不差, 这里国内拉下来, 得要不少时间, 至少我这里的网络是这样的.
cd ~ /*译者注: 这一步文件夹自己选, 不一定非得放在 home, 我是强迫症患者, 喜欢到 ~/Downloads 下*/
git clone https://github.com/Itseez/opencv.git
cd opencv
git checkout 3.0.0
要完整地安装 OpenCV 3.0
的话, 最好把 opencv_contrib 也拉下来
耗时:1m 7s
cd ~ /*这一步文件夹自己选, 不一定非得放在 home, 我是强迫症患者, 喜欢到 ~/Downloads 下*/
git clone https://github.com/Itseez/opencv_contrib.git
cd opencv_contrib
git checkout 3.0.0
现在我们到了人生的十字路口
, 啊, 不对, 是选择你自己的真命天子
, 又错了, 是某种 Open CV
来安装.
继续步骤二, 你会得到 Python 2.7+
版的, 直接跳到步骤三就是 Python 3+
版.随便你自己怎么选, 不过你得考虑清楚, 请谨慎选择, 没有机会给你反悔的哦.
当然, 是有方法让二者共存的, 不过不是这篇文章的范畴啦, 以后我会再写一篇, 教你们怎么左拥右抱.
步骤二: 在 Python 2.7+ 下编译 Open CV
安装编译所需要的头文件, 也就是 Python 的开发包啦
耗时: 1m 20s
sudo apt-get install python2.7-dev
安装 Python2.7+
兼容的包管理工具: pip
耗时: 33s
wget https://bootstrap.pypa.io/get-pip.py
sudo python get-pip.py
和我们之前在安装 OpenCV 2.4.X
的教程里面一样, 我们利用 virtualenv 和 virtualenvwrapper 来给我们不同的 Python
项目创建分离的 Python
环境.不过现在安装 Open CV
, virtualenv 和 virtualenvwrapper 不是必须要安装的.
然而,它是标准的 Python
开发环境, 我推荐你们去安装使用, 后面我会假设你们都已经安装使用它了.
用 pip
可以很简单地完成安装
耗时: 17s
sudo pip install virtualenv virtualenvwrapper
sudo rm -rf ~/.cache/pip
接下来, 我们需要设置环境变量, 随便用一个你们自己喜欢的编辑器, 来打开 ~/.profile
,如果不存在就新建一个, 然后把下面的几行添加到文件末尾
# virtualenv and virtualenvwrapper
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python2.7
export WORKON_HOME=$HOME/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh
现在 .profile
文件已经更新好了, 下一步就是要来加载它. 你需要重新打开一个终端, 或者简单地使用 source
这个命令
source ~/.profile
现在我们要开创建一个做 CV
工作的虚拟环境 cv3
(随便命名) 了
耗时: 19s
mkvirtualenv cv3
如果你在之后需要访问你的虚拟环境, 特别是你登出或者重启你的机器之后, 你可能需要 source
一下你的 ~/.profile
. (译者注:
当然, 你可以把刚才添加到 ~./profile
文件中的内容, 添加到 /etc/profile
中去, 做一个全局设置, 并不推荐这么做.) 然后用 workon
命令.
workon cv3
之后你的 shell
就只能使用和设置在 cv3
这个虚拟环境中的包了.
继续, 我们其实只依赖一个 Python
库: Numpy
, 请确保在你的虚拟环境 cv3
中已经安装 numpy
.
耗时: 13m 17s
译者注: 这个包感觉我直接安装的时候要不了这么久, 可能是虚拟环境会慢点?
pip install numpy
在我们用了 sudo pip
之后, .cache
文件价会报权限错误, 这是我们只需要把 .cache/pip
删掉, 然后重新安装 numpy
.
sudo rm -rf ~/.cache/pip/
pip install numpy
哈哈, 完成啦, 你现在应该在你的虚拟环境 cv3
中完成了 numpy
的安装.试试和我下面是不是一样的.
注意: 这些操作可能会非常的耗时间, 可能在完成一项安装之后, 关机或这登出了, 在你下次继续的时候一定记得要切换至你的虚拟环境, 不然你的继续安装和你之前的操作不是在同一个环境下,或导致你后面的操作出现错误.
我在说一句, 在你继续下一个命令前, 千万千万要确保你是在你的虚拟环境下, 我的本例子中是: cv3
.
workon cv3
现在你可以用 cmake
来设置编译了
cd ~/opencv
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D INSTALL_C_EXAMPLES=ON \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules \
-D BUILD_EXAMPLES=ON ..
CMake 大概会花 30s, 在它完成之后, 当然你得保证它没有报错, 你要检查下1输出的内容, 特别是 Python 2
这个部分.
译者注:
这里我们国内用户很可能会报错, 原因是 ippicv linux 这个包下载速度很慢, 导致下载未完成连接超时.解决的办法是手动去下载这个文件: ippicv linux .
这里的关键点就是要确保, CMake 已经正确地关联 Python 2.7
和 numpy
.
其次, 要注意下 package path
的配置, 这个文件夹是存放 Open CV 3.0
链接及其编译.从那我们可以看到我们的 Open CV 3.0
链接 存放在 /usr/local/lib/python2.7/site-packages
.
下面我们就可以正式地编译 Open CV 3.0
耗时: 65m 33s
make -j4 /*译者注: 这里的 4 是对于 Pi2 上的四核, 如果你电脑6核, 就可以是 -j6*/
编译没有错误, 现在就可以安装了
sudo make install
sudo ldconfig
现在 Open CV 3.0
已经成功地安装在了你的机器上, 下面只需要搞清楚它在哪.
还记得上面我提到的 package path
吗?
看下这个文件夹, 我的是 /usr/local/lib/python2.7/site-packages/
.
你应该看到 cv2.so
, 这是我们真正的 Python
需要的库. 下面两步是把 cv2.so
链接到我们的虚拟环境 cv3
中去
cd ~/.virtualenvs/cv3/lib/python2.7/site-packages/
ln -s /usr/local/lib/python2.7/site-packages/cv2.so cv2.so
完啦, 你现在已经把 Open CV 3.0
安装好了, 到步骤四去, 检查一下是不是安装正确.
步骤三: 在 Python 3+ 下编译 Open CV
待续...
步骤四: 确认 Open CV 3.0 安装成功
在我们结束教程之前, 你最好还是检查一下是不是安装正确了. 打开一个终端, 进入你的虚拟环境, 进去 Python shell
, 导入 OpenCV
新建文件 test.py, 输入一下内容
import cv2
if __name__ == '__main__':
print(cv2.__version__)
workon cv
python test.py
如果输出 '3.0.0'
, 就 OK 啦!
总结
这篇文章中, 我已经详细地介绍如何在 Python 2.7+
和 Python 3+
下安装 Open CV 3.0
了. 我安装时每一个步骤话的时间也给出以便大家参考.只要记住一点, 就是在你重启或者重登陆到机器中时, 你得先用 workon
切换至你的虚拟工作环境.
译者:
一开始, 发现这篇文章挺使用的,也还蛮简单, 就想着话点时间翻译下, 以便查阅. 文章看着很长其实废话很多, 有用的也就那些代码段, 如果大家只是为了快速安装,直接复制代码就好了. 不过, 老外的教程都是这样, 讲的很细, 有些重点还不止一遍两遍的提醒.这足以见得他们做事蛮认真负责的. 这文章简直太详细了, 到目前已经花了将近5个小时了, 所以我把第三步骤暂时跳过了, 等后面有时间再补上.
网友评论
折腾环境2天,让我学了不好东西!!!
执行到 mkdir build 时,出现错误说: mkdir:无法创建目录“build”:文件已存在
继续执行下面的语句,就会出现CMake error
我看了下我的site-packages文件夹里只有一个cv2.so这个文件 是不是代表我没有安装好?
返回 版本为了 3.0.0
contrib返回
Merge pull request #247 from cbslint13/daisy
估计是出错了
倒数第二行应该是workon cv3,至少我是这样的,顺序我改了一下,结果一样
还有是__
而不是_
上面是两下划线,我没看出来