Mac OS X为Python3安装OpenCV
由于研究需要和个人兴趣,最近在Python环境下做些图像处理的事情,OpenCV是一个功能强大的计算机视觉库,所以就在MacPro上搭建开发环境。
OpenCV简介
OpenCV的全称是Open Source Computer Vision Library,是一个跨平台的计算机视觉库。OpenCV是由英特尔公司发起并参与开发,以BSD许可证授权发行,可以在商业和研究领域中免费使用。OpenCV可用于开发实时的图像处理、计算机视觉以及模式识别程序。该程序库也可以使用英特尔公司的IPP进行加速处理。(引用自维基百科https://zh.wikipedia.org/wiki/OpenCV)
OpenCV是采用C++编写的,但是拥有面向Python等的接口。OpenCV发展至今,有2.x版本和3.x版本两个分支,而且两个版本分支并不兼容(这个与Python倒是十分相似),由于3.x版本在运行速度和功能上都更为强大,所以我选择安装3.x版本3.4.15(2018年6月23日),最新的可以在其官网 https://opencv.org/上查。
Mac Pro Python3环境安装OpenCV 3.x
之所以写这篇文章,一方面是我自己对这些都掌握得还不够熟练,希望为自己留一个参考;另一方面也是发现网上有诸多不同的方法和教程,做一个方法的梳理。
环境介绍
- 硬件是2013年的Mac Pro,也就是所谓的“垃圾桶”;
- 操作系统是macOs High Sierra(版本10.13.5);
- Python是采用Anaconda安装的Python 3.6.5;
- 希望安装OpenCV 3.4.15。
虽然我是想做些图像处理甚至用深度学习做些计算机视觉的事情,但是遗憾的是,我发现深度学习的框架如TensorFlow并不支持Mac系统下的GPU加速,而且Mac Pro用的是A家的显卡,就更不用想了。
OpenCV官方文档里对Mac OS并不怎么重视,与Python的环境搭建,主要是针对Python2的,我果然又是选择了一条弯路……
安装方法
其实,如果只是为Python安装OpenCV的模块,其实是件并不复杂的事情,但是如果是自己安装OpenCV,然后再和Python连起来,就会变得稍微复杂一些,根据安装的容易程度,依次推荐三种方法:
- conda install方法。安装的命令可以从以下两种中选一个,具体可参考 https://anaconda.org/conda-forge/opencv:
conda install -c conda-forge opencv
conda install -c conda-forge/label/broken opencv
- pip install方法。安装的命令可以可以从以下两种选一个,具体可参考 https://pypi.org/project/opencv-python/:
pip install opencv-python
pip install opencv-contrib-python-headless
- 手动绑定方法。假设Mac电脑已经安装好xcode、homebrew和python3等软件,并采用默认的路径配置。
- 安装OpenCV,命令为
brew install opencv
; - 将OpenCV添加到系统路径中,命令为(路径可能因为python版本不同)
- 安装OpenCV,命令为
1 | echo /usr/local/opt/opencv/lib/python3.6/site-packages >> /usr/local/lib/python3.6/site-packages/opencv3.pth |
3. 将安装好的Python与OpenCV绑定,在终端中输入命令:
1 | ln -s /usr/local/opt/opencv@3/lib/python3.6/site-packages/cv2.cpython-36m-darwin.so cv2.so |
安装结果
采用以上三种方法均可以完成python3的OpenCV模块的安装,如果安装成果,则可以在python的命令行中运行:
1 | >>> import cv2 |
并看到以下结果:
可能错误
我在安装过程中遇到了以下几个错误:
- 不同安装方式的冲突问题。 我先采用方法3进行了安装,然后又用方法1进行安装,结果方法1的配置被覆盖导致安装错误。解决办法是重新进行安装。
- 库版本不兼容的问题 网上也有提到过freetype版本不兼容的问题,我也遇到了,问题如下图:
解决这个问题的方法为先卸载版本不兼容的freetype,然后重新安装OpenCV(可参考https://www.jianshu.com/p/5bd5c96b5acf),命令为:
1 | conda uninstall freetype |