步骤概览
- 安装
Xcode
以及Apple Command Line Tools
- 安装
Homebrew
- 创建
Python
虚拟环境 - 安装
NumPy
- 安装
OpenCV
安装Xcode
以及Apple Command Line Tools
- 从App Store下载并安装Xcode。
- 接受Apple开发者协议。
sudo xcodebuild -license
- 安装
Apple Command Line Tools
输入上面的命令后,会弹出一个窗口,确认你想要安装命令行工具,点击sudo xcode-select --install
install
或安装
按钮进行安装。
安装Homebrew
Homebrew是MacOS的包管理器,类似于Ubuntu
的apt-get
。
安装命令:
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
一旦安装了Homebrew,您应该对其进行更新,以确保下载最新的软件包定义:
brew update
修改环境变量文件,如果你用的是
bash
请球盖vi ~/.bash_profile
,如果你用的是zsh
请修改vi ~/.zshrc
,添加如下内容到对应的文件:# Homebrew export PATH=/usr/local/bin:$PATH
使用
source
命名来让配置生效:source ~/.bash_profile
或source ~/.zshrc
。
创建Python
虚拟环境
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
成功。安装虚拟环境
由于在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_profile
或source ~/.zshrc
。创建虚拟环境
mkvirtualenv opencv
上面命名创建了一个名叫
opencv
的虚拟环境,你可以使用workon opencv
进入虚拟环境,也可以使用deactivate
指令从虚拟环境中退出。
安装NumPy
- 进入虚拟环境:
workon opencv
pip install numpy
安装OpenCV
环境准备:
brew install cmake pkg-config brew install jpeg libpng libtiff openexr brew install eigen tbb
从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
配置
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重要参数解释:
BUILD_opencv_python2=ON
:这表明我们要基于Python2.7来安装OpenCV 3;BUILD_opencv_python3=OFF
:这表明我们关闭Python3;PYTHON2_LIBRARY=YYY
:这是你自己填写的第一个值。您将需要用您的libpython2.7.dylib
文件的路径替换YYY
(我将帮助您在下一节中找到它);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
。替换完成之后即可执行。
编译与安装
make -j4
-j
开关控制并发编译OpenCV的处理器数量,因为我在四核系统上,所以我用-j4
。编译可能需要几十分钟左右。如果编译没有出错就可以进行安装了
sudo make install
安装成功后,可以在
/usr/local/lib/python2.7/site-packges/
下找到cv2.so
文件。在虚拟环境中添加
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
测试与验证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.