MacOS下基于Python2.7安装OpenCV3

步骤概览

  1. 安装Xcode以及Apple Command Line Tools
  2. 安装Homebrew
  3. 创建Python虚拟环境
  4. 安装NumPy
  5. 安装OpenCV

安装Xcode以及Apple Command Line Tools

  1. App Store下载并安装Xcode。
  2. 接受Apple开发者协议。
     sudo xcodebuild -license
    
  3. 安装Apple Command Line Tools
     sudo xcode-select --install
    
    输入上面的命令后,会弹出一个窗口,确认你想要安装命令行工具,点击install安装按钮进行安装。

安装Homebrew

Homebrew是MacOS的包管理器,类似于Ubuntuapt-get

  1. 安装命令:

     /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
    
  2. 一旦安装了Homebrew,您应该对其进行更新,以确保下载最新的软件包定义:

     brew update
    
  3. 修改环境变量文件,如果你用的是bash请球盖vi ~/.bash_profile,如果你用的是zsh请修改vi ~/.zshrc,添加如下内容到对应的文件:

     # Homebrew
     export PATH=/usr/local/bin:$PATH
    
  4. 使用source命名来让配置生效:source ~/.bash_profilesource ~/.zshrc

创建Python虚拟环境

  1. MacOS默认已安装Python,不同的MacOS版本可能对应的Python版本不同。可以使用python --version来获取当前系统中的Python版本。如果当前版本不是2.7.x,可以使用Homebrew来安装:

     brew install python
    

    安装完成之后,我们需要把操作系统的python链接到Homebrew的安装目录:

     brew linkapps python
    

    检查安装是否正确:

     which python
    

    如果输出的路径是/usr/local/bin/python则说明安装Python成功。

  2. 安装虚拟环境

    由于在OS X El Capitan中,在内核下引入了Rootless机制,即使root用户也无法对/System/bin/sbin/usr(except /usr/local)目录有写和执行权限,只有Apple以及Apple授权签名的软件(包括命令行工具)可以修改此目录。

    因此在使用操作系统自带的Python时,使用pip安装某些包时会存在失败的情况。所以我们在这里使用python虚拟环境来规避这个问题。

     pip install virtualenv virtualenvwrapper
    

    安装完成之后,我们需要再次修改环境变量文件,如果你用的是bash请球盖vi ~/.bash_profile,如果你用的是zsh请修改vi ~/.zshrc,添加如下内容到对应的文件:

     # Virtualenv/VirtualenvWrapper
     source /usr/local/bin/virtualenvwrapper.sh
    

    使用source命名来让配置生效:source ~/.bash_profilesource ~/.zshrc

  3. 创建虚拟环境

     mkvirtualenv opencv
    

    上面命名创建了一个名叫opencv的虚拟环境,你可以使用workon opencv进入虚拟环境,也可以使用deactivate指令从虚拟环境中退出。

安装NumPy

  1. 进入虚拟环境: workon opencv
  2. pip install numpy

安装OpenCV

  1. 环境准备:

     brew install cmake pkg-config
     brew install jpeg libpng libtiff openexr
     brew install eigen tbb
    
  2. 从github下载OpenCV3

     cd ~
     git clone https://github.com/opencv/opencv
     git clone https://github.com/opencv/opencv_contrib
    

    下载完成之后,进入源码目录切换到指定的版本,譬如安装OpenCV的3.3.1版本:

     cd ~/opencv
     git checkout -b 3.3.1 3.3.1
     cd ~/opencv_contrib
     git checkout -b 3.3.1 3.3.1
    
  3. 配置CMake

     cd ~/opencv
     mkdir build
     cd build
    

    接着我们就可以执行cmake命令了,但在执行命令之前有两个参数需要调整:

     cmake -D CMAKE_BUILD_TYPE=RELEASE \
     -D CMAKE_INSTALL_PREFIX=/usr/local \
     -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules \
     -D PYTHON2_LIBRARY=YYY \
     -D PYTHON2_INCLUDE_DIR=ZZZ \
     -D PYTHON2_EXECUTABLE=/usr/local/bin/python \
     -D BUILD_opencv_python2=ON \
     -D BUILD_opencv_python3=OFF \
     -D INSTALL_PYTHON_EXAMPLES=ON \
     -D INSTALL_C_EXAMPLES=OFF \
     -D BUILD_EXAMPLES=ON ..
    

    cmake重要参数解释:

    1. BUILD_opencv_python2=ON:这表明我们要基于Python2.7来安装OpenCV 3;
    2. BUILD_opencv_python3=OFF:这表明我们关闭Python3;
    3. PYTHON2_LIBRARY=YYY:这是你自己填写的第一个值。您将需要用您的libpython2.7.dylib文件的路径替换YYY(我将帮助您在下一节中找到它);
    4. PYTHON2_INCLUDE_DIR=ZZZ:这是您需要填写的第二个值。您需要将ZZZ替换为Python.h头文件所在目录的路径(同样,我将帮助您确定此路径)

      获取PYTHON2_LIBRARY的路径

      ls /usr/local/Cellar/python/2.7.*/Frameworks/Python.framework/Versions/2.7/lib/python2.7/config/libpython2.7.dylib
      

      将上面的输出拷贝出来替换掉PYTHON2_LIBRARY=YYY中的YYY

      获取PYTHON2_INCLUDE_DIR的路径

      ls -d /usr/local/Cellar/python/2.7.*/Frameworks/Python.framework/Versions/2.7/include/python2.7/
      

      将上面的输出拷贝出来替换掉PYTHON2_INCLUDE_DIR=ZZZ中的ZZZ

      替换完成之后即可执行。

  4. 编译与安装

     make -j4
    

    -j开关控制并发编译OpenCV的处理器数量,因为我在四核系统上,所以我用-j4。编译可能需要几十分钟左右。

    如果编译没有出错就可以进行安装了

     sudo make install
    

    安装成功后,可以在/usr/local/lib/python2.7/site-packges/下找到cv2.so文件。

  5. 在虚拟环境中添加cv2.so的软连接

      cd ~/.virtualenvs/cv/lib/python2.7/site-packages/
      ln -s /usr/local/lib/python2.7/site-packages/cv2.so cv2.so cv2.so
    
  6. 测试与验证OpenCV

    打开一个新的终端:

     $ workon opencv
     $ python
     Python 2.7.12 (default, Oct 11 2016, 05:20:59) 
     [GCC 4.2.1 Compatible Apple LLVM 8.0.0 (clang-800.0.38)] on darwin
     Type "help", "copyright", "credits" or "license" for more information.
     >>> import cv2
     >>> cv2.__version__
     '3.3.1
     >>>
    

如何完整的卸载OpenCV?

  • 可以通过进入之前的build目录,执行make uninstall来完整卸载OpenCV.

参考资料


   转载规则


《MacOS下基于Python2.7安装OpenCV3》 Angus_Lu 采用 知识共享署名 4.0 国际许可协议 进行许可。
 上一篇
Hystrix 配置属性参考 Hystrix 配置属性参考
介绍Hystrix使用Archaius作为配置属性的默认实现。下面的文档描述了默认使用的HystrixPropertiesStrategy实现,你也可以使用插件的方式来覆盖它。每个属性有四个优先级:代码的全局默认值如果没有设置以下3个,则这
2018-01-04 10:39:38
下一篇 
Geetest拖拽验证码破解思路(java) Geetest拖拽验证码破解思路(java)
项目中有个需求希望能获取公司的工商注册信息,刚开始是想与第三方数据公司合作,因种 种原因合作没有达成。于是想做个爬虫直接从工商局的《企业信用信息公示系统》中获取。 要想从《企业信用信息公示系统》中爬取数据,首先必须解决掉Geetest验证码
2017-11-24 16:29:56
  目录