如何为iOS7编译OpenCV(arm64)

TUN*_*R88 2 python opencv ios ios7

编译Xcode项目失败并出现以下错误: '缺少文件/ Users/* /Git/ocr/opencv2.framework/opencv2中所需的架构arm64'

它运行良好,如果我将架构(在Build Settings下)更改为(armv7,armv7s)而不是(armv7,armv7s).

如何更改opencv python构建脚本,为opencv2.framework添加arm64支持?

aha*_*aha 8

最新的OpenCV iOS框架默认支持64位

它可以在以下网址下载:OpenCV下载页面


Jan*_*Jan 5

我修改了以下内容以使其构建,尽管我目前还没有 arm64 iOS 设备进行测试。

编辑:我也必须遵循/sf/answers/1191779641/

假设“opencv”是包含来自 Github 的 opencv 源的文件夹:

在每个gzlib.c, gzread.c, gzwrite.c位于opencv/3rdparty/zlib/添加:

#include <unistd.h>
Run Code Online (Sandbox Code Playgroud)

在现有包含之后的顶部。

另外打开opencv/platforms/ios/cmake/Modules/Platform/iOS.cmake和更改第 88 行:

set (CMAKE_OSX_ARCHITECTURES "$(ARCHS_STANDARD_32_BIT)" CACHE string  "Build architecture for iOS")
Run Code Online (Sandbox Code Playgroud)

到:

set (CMAKE_OSX_ARCHITECTURES "$(ARCHS_STANDARD_INCLUDING_64_BIT)" CACHE string  "Build architecture for iOS")
Run Code Online (Sandbox Code Playgroud)

此外,将第opencv/platforms/ios/build_framework.py99 行和第 100 行中的构建脚本从:

targets = ["iPhoneOS", "iPhoneOS", "iPhoneSimulator"]
archs = ["armv7", "armv7s", "i386"]
Run Code Online (Sandbox Code Playgroud)

到:

targets = ["iPhoneOS", "iPhoneOS", "iPhoneOS", "iPhoneSimulator", "iPhoneSimulator"]
archs = ["armv7", "armv7s", "arm64", "i386", "x86_64"]
Run Code Online (Sandbox Code Playgroud)

生成的库将包括以下内容:

$ xcrun -sdk iphoneos lipo -info opencv2
    Architectures in the fat file: opencv2 are: armv7 armv7s i386 x86_64 arm64
Run Code Online (Sandbox Code Playgroud)

尽管我仍然担心opencv/platforms/ios/cmake/Toolchain-iPhoneOS_Xcode.cmake在第 14 行和第 17 行中哪个将数据指针的大小定义为 4。我猜应该是 8 64 位,所以我还没有测试编译的库是否适用于 arm64 我会如果运行不正常,建议此时进行进一步调查。