iOS 编译 OpenCV Xcframework
2024-05-17 本文已影响0人
前行哲
背景
OpenCV 官方提供 Framework 下载:https://opencv.org/releases/。
但是官方给的这个 Framework 只能在真机运行,如果想在模拟器上运行,就得 Github 上查找,或者手动编译。但是 Github 上面找的很多不一定符合我们的需求,也不好维护,如果作者不及时更新,我们就很难升级上去。所以,还是觉得自己动手。
编译
-
首先从 Github 下载源码:https://github.com/opencv/opencv
-
系统及环境要求
- MacOS 10.15 or later
- Python 3.6 or later
- CMake 3.18.5/3.19.0 or later (make sure the cmake command is available on your PATH)
- Xcode 12.2 or later (and its command line tools)
-
执行脚本
源码中已经提供了脚本,我们只需要对应执行即可,脚本在opencv/platforms/apple/build_xcframework.py
路径下。
直接按照官方提供的脚本执行示例(官方文档),大概率是不行的,反正我在M2上一直没有编成功。
经过一番折腾,修改脚本执行时的相关参数,最终正常编译出 Xcframework。如下:
python3 opencv/platforms/apple/build_xcframework.py --out ./build_xcframework --contrib opencv_contrib --framework_name=opencv2 --build_only_specified_archs --iphoneos_archs "arm64" --iphonesimulator_archs "arm64,x86_64" --iphoneos_deployment_target "12.0" --macos_archs "arm64,x86_64" --catalyst_archs "arm64,x86_64" --without objc
注意:
1)上述执行完,会导出苹果各个平台的 opencv 库,然后合并成一个 Xcframework,如果你只需要iOS平台的,可以调整下相关的参数,比如去掉 --macos_archs "arm64,x86_64" --catalyst_archs "arm64,x86_64"
。
2)另外还有一点非常重要的,也是我多次失败后发现的,就是如果你的网络访问 Github 存在问题的话,你最好保证能够正常访问,否则一些资源拉不下在也会造成编译失败。