美文网首页技术向CAFFE我爱编程
[翻译]Python 2.7 和 Python 3+ 的Open

[翻译]Python 2.7 和 Python 3+ 的Open

作者: 周筱鲁 | 来源:发表于2015-08-07 14:33 被阅读95694次

    这是在PyImageSearchAdrian 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.7Python 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:

    Figure 1: 智能家居安防系统Figure 1: 智能家居安防系统

    看到这些是不是内心激动难耐, 那么跟着我接着干吧.


    在 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, Scipyscikit-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 的教程里面一样, 我们利用 virtualenvvirtualenvwrapper 来给我们不同的 Python 项目创建分离的 Python 环境.不过现在安装 Open CV, virtualenvvirtualenvwrapper 不是必须要安装的.
    然而,它是标准的 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 的安装.试试和我下面是不是一样的.

    Figure 2: 完成 numpy 的安装Figure 2: 完成 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 .

    Figure 3: CMake 正常输出Figure 3: CMake 正常输出

    这里的关键点就是要确保, CMake 已经正确地关联 Python 2.7numpy.
    其次, 要注意下 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/.

    Figure 4: Open CV 3.0 已经成功地安装Figure 4: Open CV 3.0 已经成功地安装

    你应该看到 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 啦!

    Figure 5: 输出成功Figure 5: 输出成功

    总结

    这篇文章中, 我已经详细地介绍如何在 Python 2.7+Python 3+ 下安装 Open CV 3.0了. 我安装时每一个步骤话的时间也给出以便大家参考.只要记住一点, 就是在你重启或者重登陆到机器中时, 你得先用 workon 切换至你的虚拟工作环境.

    译者:

    一开始, 发现这篇文章挺使用的,也还蛮简单, 就想着话点时间翻译下, 以便查阅. 文章看着很长其实废话很多, 有用的也就那些代码段, 如果大家只是为了快速安装,直接复制代码就好了. 不过, 老外的教程都是这样, 讲的很细, 有些重点还不止一遍两遍的提醒.这足以见得他们做事蛮认真负责的. 这文章简直太详细了, 到目前已经花了将近5个小时了, 所以我把第三步骤暂时跳过了, 等后面有时间再补上.

    相关文章

      网友评论

      • FZ_c9db:请问一下,要在python3上面安装要怎么装啊,我用虚拟环境怎么装都会装到2.7上面去
        FZ_c9db:@周筱鲁 可以说详细一点吗?:sob: 配了两天了,虚拟环境即使指定使用python3.5编译,python(for build)依然是2.7.其实我是在树莓派上面配opencv和mxnet,opencv会自动往2.7上面配,mxnet则自动往3.5上配。
        周筱鲁:pip 命令用python3路徑下的
      • 角落里的眺望:想问楼主,有办法把编译好的python opencv库打包成安装包吗?
        周筱鲁:@zxfzqf 可以的,so 和 dll
      • lincaiming:感谢楼主无私的奉献精神,非常感谢!!!
        折腾环境2天,让我学了不好东西!!!
      • 栗子928147869:求楼主解答
        执行到 mkdir build 时,出现错误说: mkdir:无法创建目录“build”:文件已存在
        继续执行下面的语句,就会出现CMake error
      • cf399975cc2c:你好,我在第二步执行Cmake编译的时候,cd ~/opencv,运行结果显示没有这个文件夹或目录。是什么情况,这个opencv怎么没有呢
        cf399975cc2c:@蔻蔻不是我真名 装了一天成功了呢
      • 我家门前的柿树:在输入pip install numpy我的出现解释器出错,符号连接层次过多
        我家门前的柿树: @JohnZoe 还是不行
        周筱鲁:@我家门前的柿树 加--compile 试试
      • 3ac74f019b14:楼主 我不知道为什么我编译和安装都完成了 可是import cv2却说 no module
        我看了下我的site-packages文件夹里只有一个cv2.so这个文件 是不是代表我没有安装好?
        周筱鲁:@摇摆头10 有文件应该是ok的,检查下 python 是不是与site-packages对应
      • 2d93254d75ab:第一个checkout 3.0.0
        返回 版本为了 3.0.0
        contrib返回
        Merge pull request #247 from cbslint13/daisy
        估计是出错了
        周筱鲁:@大火伴 你看下项目有几个分支 一般直接master
      • 2d93254d75ab:为什么不推荐全局环境变量
        周筱鲁:@2d93254d75ab 防止各种冲突,其次便于发布和部署
        2d93254d75ab:@2d93254d75ab 我用来做CV
      • 2d93254d75ab:多谢了,翻译很好,原文我也看了
        倒数第二行应该是workon cv3,至少我是这样的,顺序我改了一下,结果一样
        还有是__
        而不是_
        上面是两下划线,我没看出来
        横须贺_:@大火伴 你好,如果我的网络不能翻墙上外网,上面的安装过程是否都可以进行?
        2d93254d75ab:我是说,你是对的,我看错了
        周筱鲁:@2d93254d75ab 谢谢支持,确实少了_ 当时写完没检查。太粗心乐
      • knightx:跪求大神指点一下,这样安装opencv与我直接执行安装python opencv:sudo apt-get install libopencv-dev python-opencv;然后安装python imaging library:sudo apt-get install python-imaging有什么区别吗?谢谢
        周筱鲁:@knightx 这个是通用的编译安装,原文是给Raspberry PI安装的,一般pc机器都有源 直接安装是可以的
      • 5601cab8290a:正好用的上,多谢分享!

      本文标题:[翻译]Python 2.7 和 Python 3+ 的Open

      本文链接:https://www.haomeiwen.com/subject/jorbqttx.html