CaptainChen

Mac/Ubuntu下opencv3安装折腾小记

说实话,opencv3的安装真的是个大坑,按照网上各种教程编译安装总是莫名其妙报各种错误,根据错误信息上网搜索往往折腾数日无果,然而通过本人多平台多次测试,真正解决的方法极其简单,总结一句话就是:安装错误全是opencv开发者的锅,安装时不要装正式版,装最近提交的HEAD版即可😂

1. Mac平台

系统版本: macOS Sierra通用

2017.9.2更新:

最近opencv已发布重大更新,版本号升级到3.3.0,homebrew/science下原来的opencv2和opencv3已经合并,统称opencv。因此直接用homebrew install opencv即可,大大简化了安装流程。用最新的安装方式安装,opencv2和opencv3都安装好了,且自动加入了对Python2和Python3的支持。

Mac上的包管理工具Homebrew极其强大。一般而言,用homebrew install opencv或者brew install opencv3就可快速安装opencv2或者opencv3,非常简单方便。

然而目前的问题是,用homebrew安装opencv2后,表面上一切正常,在用cv2.VideoCapture('xx.avi')读取视频并逐帧打印它的fps时,得到的结果竟是0,意味着其实读的是NULL。另一方面,如果用这样的方法安装opencv3, 会提示缺少QTKit.framework,这个东西已经被apple废弃了并替换为了AVFoundation。网上的解决办法都是清一色选择从旧版本系统中把QTKit.framework文件复制过来,我个人很不赞成这种做法,这样会造成系统混乱。

其实解决方法也是极其简单,安装opencv的HEAD版本即可: 用brew install opencv3 --HEAD --with-ffmpeg 来安装opencv3(先用Homebrew装好ffmpeg),由于安装的是HEAD版,所以装完后得用brew link --force opencv3强制link一下。之后再用cv2.VideoCapture('xx.avi')读取视频时,每一帧就不是NULL了

2. Ubuntu平台

其实Ubuntu下和Mac一样,pip安装的opencv有问题,还是得自行编译。另一方面,自行编译的opencv比pip直接安装的性能要好,也推荐自行编译。

这里Pyimagesearch上对Ubuntu下如何安装opencv3有一个很详细的说明,具体的就不多说了,直接上链接:http://www.pyimagesearch.com/2015/06/22/install-opencv-3-0-and-python-2-7-on-ubuntu/

这里要说的是,按他这里的方法编译,也是会出各种bug,最常见的是Step10编译时发生错误,尤其是提示opencv_photoopencv_xphoto相关的错误,以及opencv3和CUDA8.0之间冲突的一些问题。总之,也是百度谷歌所有方案,无一能有效解决。

而真正的解决方案也很简单,安装opencv HEAD版本即可😂:

把Step 10中的两处git checkout 3.0.0均改为git checkout HEAD(或者手动指定最新版git checkout 3.2.0rc2之类),其余不变即可完成正常编译和安装。


总之,问题还是出现在opencv开发者上,更新速度太慢,正式版中的诸多bug不能及时解决,还与新版CUDA8.0冲突,因此只能装HEAD版了….💊

觉得文章不错,就赏我一杯咖啡钱吧~