在macOS Sierra上安装 OpenCV 3
OpenCV 是计算机视觉处理任务中的常用库,也因为复杂度高,对它的安装也不是那么一蹴而就。今天重新把它给本机Python2,Python3重新安装了一下,特此做个记录。
(这里不涉及虚拟环境配置部分,需要的话可以看原文。)
操作环境:
- macOS 10.12.5
- Python 2.7.13
- Python 3.6.1
- cv2 version 3.2.0
首先你需要安装 Homebrew,这个不用说了。完成之后用它来安装两个版本的python(这个分裂真是!当初python3出来,就应该尽快把python2干掉,就没那么多后遗症了):
$ brew install python python3
这里再次强调一下,mac系统自带的python不是用来给你做开发的。其它常用的工具,ruby,git等,都用brew装一遍。安装完成之后需要link一下:
$ brew linkapps python
$ brew linkapps python3
查看环境时候会调用 brew 版本的两个 python:
$ which python
/usr/local/bin/python
$ which python3
/usr/local/bin/python3
你可以在命令行下,使上述配置生效
source ~/.bash_profile
然后查看brew安装的两个python的版本号:
$ python --version
Python 2.7.13
$ python3 --version
Python 3.6.1
brew不能一键安装OpenCV(用的人少???),你需要加一个tap:
brew tap homebrew/science
下面是复杂的地方,你以为配置完这个tap就可以搞定了。但是如果你直接装,可能会报错:
opencv3: Does not support building both Python 2 and 3 wrappers
解决办法有两个,我只写作者推荐的那个。报错原因是现有版本做了不必要的check。所以你需要编辑一下配置文件:
brew edit opencv3
如果你没设置Homebrew编辑器,默认会用vim打开(论vim的重要性!)
你需要在第187行找到这几行字。把它们用 #
号comment掉。
if build.with?("python3") && build.with?("python")
# Opencv3 Does not support building both Python 2 and 3 versions
odie "opencv3: Does not support building both Python 2 and 3 wrappers"
end
修改前(盗图):
修改后(还是盗图):
保存退出,然后开始正式安装。
brew install opencv3 --with-contrib --with-python3
要让python找到你刚刚安好的cv2,需要再敲一行:
$ echo /usr/local/opt/opencv3/lib/python2.7/site-packages >> /usr/local/lib/python2.7/site-packages/opencv3.pth
这一行创建了一个 .pth
文件告诉 Homebrew’s 的 Python 2.7 额外的包在 /usr/local/opt/opencv3/lib/python2.7/site-packages
找。
这还没完,你会发现cv2在python3的路径下有一个搞笑的名字叫cv2.cpython-36m-darwin.so
。
$ ls -l /usr/local/opt/opencv3/lib/python3.6/site-packages/
total 6952
-r--r--r-- 1 admin admin 3556384 Dec 15 09:28 cv2.cpython-36m-darwin.so
你需要把它重命名成 cv2.so
$ cd /usr/local/opt/opencv3/lib/python3.6/site-packages/
$ mv cv2.cpython-36m-darwin.so cv2.so
$ cd ~
还没完,你需要告诉 homebrew 的 python3,去哪里找这个库:
$ echo /usr/local/opt/opencv3/lib/python3.6/site-packages >> /usr/local/lib/python3.6/site-packages/opencv3.pth
安装完成进行验证:
$ python
Python 2.7.13 (default, Dec 18 2016, 07:03:39)
[GCC 4.2.1 Compatible Apple LLVM 8.0.0 (clang-800.0.42.1)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
>>> cv2.__version__
'3.2.0'
$ python3
Python 3.6.1 (default, Apr 4 2017, 09:40:21)
[GCC 4.2.1 Compatible Apple LLVM 8.1.0 (clang-802.0.38)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
>>> cv2.__version__
'3.2.0'
至此大功告成,可以玩耍了。其它问题可以仔细参考下面这两篇文章,讲的很好:
Read more: