Skip to content
Mo's Blog
Go back

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 Capitan 开始引入了 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 这个库。从 GitHub 上搜索一下,找到了解决方案:

conda install -c conda-forge x264=20131218

这次大功告成。


Share this post on:

Previous Post
新篇章
Next Post
迭代优化算法