macOS High Sierra Version 10.13.6安装OpenCV 3.4.1的问题以及解决

尽管有Homebrew以及conda,在macOS上安装OpenCV却依然未必容易,经常发生各种各样的bug。鉴于我已经过了整天折腾环境的年纪,本文就怎么简单怎么来,为大家提供一个最简单的安装方案。

使用Google搜一下如何用conda安装预编译的OpenCV就会发现很多文章讲的是使用menpo频道的方法。然而实际操作就会发现这个方法不能安装Python 3兼容的OpenCV。经过一番探索,发现conda-forge频道的OpenCV是可以和Python 3兼容的,并且OpenCV的版本也很新。

先搜索一下有哪些包可用:

conda search -c conda-forge --spec 'opencv=3*'

截至本文撰写的时间,最新版本为3.4.1。

那就安装上它

conda install -c conda-forge opencv

结束。

开玩笑。。要是这么简单我就不会写这篇博文了。
现在运行python -c 'import cv2'的话,会报一个错误

Traceback (most recent call last):
  File "<string>", line 1, in <module>
ImportError: dlopen(/usr/local/anaconda3/lib/python3.6/site-packages/cv2.cpython-36m-darwin.so, 2): Library not loaded: @rpath/libintl.8.dylib
  Referenced from: /usr/local/anaconda3/lib/libharfbuzz.0.dylib
  Reason: image not found

找不到libintl.8.dylib。因为El Captain开始引入了SIP,添加DYLD_*的环境变量经常搞出来各种问题。那么就用一个简单粗暴的方式解决问题好了。

搜索一下libintl.8.dylib这个文件是不是存在:

locate libintl.8.dylib

在我的系统中,gettext-0.19.8.1-0包里有这个动态链接库,位于/usr/local/anaconda3/pkgs/gettext-0.19.8.1-0/lib/libintl.8.dylib
直接把它复制到系统的链接库路径

cp /usr/local/anaconda3/pkgs/gettext-0.19.8.1-h15daf44_3/lib/libintl.8.dylib /usr/local/lib

再次测试一下python -c 'import cv2',嗯又报错了。。

Traceback (most recent call last):
  File "<string>", line 1, in <module>
ImportError: dlopen(/usr/local/anaconda3/lib/python3.6/site-packages/cv2.cpython-36m-darwin.so, 2): Library not loaded: @rpath/libx264.138.dylib
  Referenced from: /usr/local/anaconda3/lib/libavcodec.57.dylib
  Reason: image not found

这次搜索后发现系统里没有libx264.138.dylib这个库。。
从GayHub哦不是GitHub上搜索一下,找到了解决方案:

conda install -c conda-forge x264=20131218

这次大功告成。

标签: none

添加新评论