本文保留所有权, 如需转载务必注明出处: //www.greatytc.com/p/86216b4b5949
因为官方发布的(OpenCV releases)并没有包含opencv_contrib
这部分的模块, 一部分原因是有些库虽然是开源的但不是商业免费的, 但是这影响到了我们用于学习: 比如 face 这个成熟的库就没有在官方的编译包中. 所以, 我们编译自己使用的framework有时候是必要的.
- 首先准备好Cmake, 在命令行中输入
brew install cmake
如果你没有安装过homebrew, 请自行百度,非常简单. - 创建一个工作目录, 比如我在桌面上创建了一个叫
opencvForBuild
的文件夹. 然后去下载需要的资源内容,特别说明: 因为墙的原因请不要到官方GitHub或官网下载, 很慢浪费时间并且可能失败
, 请到国内gitee网站搜索最新的更新项目进行下载到目录opencvForBuild
就可以了. 我给出截止今天2019.10.07最新的更新:
opencv标准库:https://gitee.com/mirrors/opencv
opencv_contrib贡献库:https://gitee.com/iamcjj/opencv_contrib
- 到目录
opencvForBuild/opencv_contrib/modules
把所有你需要的模块复制到目录opencvForBuild/opencv/modules
下, 然后就得到你所需要的所有编译模块了. - 找到
opencvForBuild/opencv/platforms/ios/build_framework.py
这个文件并打开, 因为这里需要修改几个简单的配置, 否则可能会出现编译报错. 因为OpenCV iOS全平台编译需要约1.5小时, 我希望你把所有错误先解决在编译, 否则折腾一天就过去了!
请将图中的--enable_nonfree', default=True
设为True
因为默认是False
. 当然, 如果你不需要一些模拟器平台的编译包, 可以自行百度修改图中的所包含的编译平台, 因为如果减少一些平台比如模拟器, 可能大幅度减少编译时间和编译生成的framework大小. 但是, 我是用于学习, 所以不做修改, MacBook pro 2018 编译总耗时 1.5 小时左右、framework大小550M左右. - 首先确认你的Xcode命令行程序安装正确, 可以自行百度, 如果无法确认可以到苹果官网
https://developer.apple.com/download/more
找到与你的Xcode版本相对应的命令行工具. 通常, 需要这么做的都是因为你的电脑安装了多个Xcode或者安装过Xcode Beta版本. - 如果你不仅安装了一个Xcode版本程序, 比如我安装了Xcode Beta版和正式版, 所以可能导致编译过程中: 因为有两个Xcode而程序无法确定需要哪个Xcode进行编译导致报错. 所以, 请先确认一个Xcode程序, 但是如果你只安装了一个Xcode请忽略这一个步骤.
命令行:sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer/
手动指定一个Xcode即可解决这个问题. - 可以开始编译了, 如果是笔记本请备好电脑风扇散热, 准备好零食看剧, 先打开我的工作目录
你的目录应该只有图中的两个文件, 或者加上压缩包, 而iOS这个文件夹是编译后才生成的, 全平台编译后大约1.33G. 其余压缩包问价, 是我用于备份的, 也推荐你也先这么做, 防止编译过程中错误后导致文件损坏了.编译过程中需要下载一些文件, 请确保网络正常!!!
命令行:
(a). 定向到工作目录cd <路径>/opencvForBuild
因为这里会于存储编译生成的 iOS文件夹, 如上图所示的.
(b). 继续输入python opencv/platforms/ios/build_framework.py iOS
这里特别说明: 不需要理会python版本, 至少我当前不需要理会也可以通过. 在我的电脑也安装了 python3 , 但是编译的时候使用 python 并不是 python3也可以成功编译, 所以请不要纠结用哪个python版本.
(c). 电脑CPU可能会跑到90%, 请注意散热否则降频会更慢...慢...慢..., 并且不要让电脑息屏, 虽然不知道息屏会怎么样, 但是我不想再搞一遍了实在恶心得要命, 前后折腾了我两天!!! God damn funck!
上一张编译好的图片:
最后, 如果你只想要这个最新的iOS全平台编译包用于学习, 请到我的网盘下载即可, 里面包含了所有opencv和opencv_contrib的模块, 但是比较大550M左右. 如果这个链接失效了, 或者需要更新库文件, 请私信我, 我可能只是可能可能会更新.但是在网盘上显示大小是1.02G, 我电脑显示是548M, 我也不知道为什么.至于后续怎么在Xcode中配置使用, 请自行百度吧, 因为我已经把最重要的内容写好了, 其他的有空再说吧.
至少, 我保证我的OpenCV framework文件是使用正常的, 请尽情享用!!!