美文网首页
OpenCV 编译iOS库过程-附带dnn_superres模块

OpenCV 编译iOS库过程-附带dnn_superres模块

作者: 何颀 | 来源:发表于2024-09-22 15:40 被阅读0次

编译过程
1.创建openCVForBuild 目录
2.cd openCVForBuild
3.git clone https://github.com/opencv/opencv.git
4.git clone https://github.com/opencv/opencv_contrib.git
5.brew install libtool
6.open opencv/platforms/ios/build_framework.py
7.找到调用 libtool 的部分,应该类似于:
execute(["libtool", "-static", "-o", res] + libs + libs3 + module)
将 libtool 替换为 glibtool,如下:
execute(["glibtool", "-static", "-o", res] + libs + libs3 + module)
8.python3 opencv/platforms/apple/build_xcframework.py
--out ./build_xcframework_ios
--contrib ./opencv_contrib
--framework_name=opencv2
--build_only_specified_archs
--iphoneos_archs "arm64"
--iphonesimulator_archs "arm64,x86_64"
--iphoneos_deployment_target "12.0"
--without objc
--enable_opencv_modules "dnn_superres,dnn"

过程问题记录
第8步时报错 libtool: error: unrecognised option: '-static'

解决方法:

这个错误表明当前的 libtool 不支持 -static 选项。

主要原因是当前正在使用的是 Homebrew 安装的 GNU 版本 libtool,这导致了 -static 选项的错误。为了让 OpenCV 构建使用 macOS 自带的 libtool

取消链接 Homebrew 的 GNUlibtool


`brew unlink libtool`

`which libtool`

输出路径为 `/usr/bin/libtool`

如果上述操作未能输出 /usr/bin/libtool

可再次尝试从环境变量中移除 GNU libtool 的路径

export PATH="/usr/bin:$PATH"

再次查看 which libtool

然后再执行第8步

构建产物 opencv2.xcframework.zip
产物分析

iphoneos iphonesimulator opencv2.xcframework

这三个库分别是

  1. iphoneos:

    • 这是为物理 iOS 设备(如 iPhone、iPad 等)构建的库和框架,使用的是 ARM 架构(arm64)。
    • 你会在这个目录下找到专门为 iOS 设备优化的二进制文件。
  2. iphonesimulator:

    • 这是为 iOS 模拟器构建的库,适用于在 Mac 上运行的模拟器,支持的架构包括 arm64(针对 Apple Silicon 芯片的 Mac)和 x86_64(针对 Intel 芯片的 Mac)。
    • 这个库用于在 Xcode 中测试你的应用时,通过模拟器运行。
  3. opencv2.xcframework:

    • 这是一个包含多个平台的 xcframework,它打包了 iphoneosiphonesimulator 两个版本的库,方便你在 iOS 项目中使用。
    • xcframework 是 Apple 提供的多平台框架格式,支持通过单个包来同时适配设备和模拟器。

相关文章

网友评论

      本文标题:OpenCV 编译iOS库过程-附带dnn_superres模块

      本文链接:https://www.haomeiwen.com/subject/nefxrjtx.html