opencv绑定ios

Posted

技术标签:

【中文标题】opencv绑定ios【英文标题】:Opencv binding ios 【发布时间】:2018-01-30 14:03:45 【问题描述】:

我正在尝试为 OpenCV 3.4 的目标 c 库创建 C#绑定(https://opencv.org/releases.html,预编译并使用额外模块从源代码构建)但没有成功。 要么我使用了错误的 Sharpie 参数,要么编译的 opencv2.framework 有问题。

工具/版本:

Sharpie 3.4.0 Iphone11.2 SDK OpenCV 3.4.0(预编译和/或使用额外模块从源代码成功构建)

我尝试了以下 Sharpie 参数(当当前目录包含 opencv2.framework 时):

$ sharpie bind -framework opencv2
$ Done. Exiting with error code 1.
error: opencv2: Umbrella header file does not exist: opencv2.framework/Headers/opencv2.h
$

那是因为伞形文件是 Headers/opencv.hpp。所以我把参数改成:

$ sharpie bind -fx-umbrella opencv2.framework/Headers/opencv.hpp -framework opencv2    
Done. Exiting with error code 1.
error: opencv2: Umbrella header file does not exist: opencv2.framework/Headers/opencv2.h
$

在每个订单中都会被完全忽略。

我还尝试了许多其他可能性,例如仅定义 .a 文件(结合使用 lipo 删除包含的库):

$ sharpie bind opencv2.a
Parsing 1 header files...
warning: [SomePath]/opencv2.a: 'linker' input unused [-Wunused-command-line-argument]
warning: argument unused during compilation: '-c' [-Wunused-command-line-argument]
warning: argument unused during compilation: '-fno-spell-checking' [-Wunused-command-line-argument]
warning: argument unused during compilation: '-Xclang -detailed-preprocessing-record' [-Wunused-command-line-argument]
error: unable to handle compilation, expected exactly one compiler job in ''
Error while processing [SomePath]/opencv2.a.
Done. Exiting with error code 1.
error: Clang failed to parse input and exited with code 1
$

或直接使用:

$ sharpie bind Headers/opencv.hpp

失败是因为找不到“opencv2/...hpp”文件,因为每个包含的 hpp 都引用“opencv2/...”结构

【问题讨论】:

您是否尝试将Headers 文件夹临时移动到opencv2.framework 我试过了,但没有帮助。在 opencv2.framework 目录中,有一个指向 Versions/A/Headers 的符号链接(Versions/A 还包含 .a 文件)和一个指向 .a 文件的符号链接 opencv2(如果有机会,请查看文件夹结构,包的链接在我的开始帖中) 【参考方案1】:

documentation 中的事实非常微妙,但它指出

-framework 选项不允许显式传递头文件。

还有那个

实际上,指定 -framework 只是一个捷径。

因此,如果您需要指定伞形头文件,则可以将参数编写为

sharpie bind opencv2.framework/Headers/opencv.hpp -scope opencv2.framework/Headers -c -F .

这将启动该过程,但前面还有无数其他问题。在尝试让 Sharpie 使用 OpenCV 工作一天后,我个人放弃了,但祝所有走这条路的人好运。

【讨论】:

以上是关于opencv绑定ios的主要内容,如果未能解决你的问题,请参考以下文章

在 iOS OpenCV 相机中将相机预览旋转到人像

为 OpenCV 编译 MATLAB 绑定

opencv绑定ios

OpenCV-Python绑定如何工作及如何扩展新模块到Python

SWIG Python 绑定到本地代码不适用于 OpenCV 2.1

为使用 OpenCV 的 C++ 代码编写 Python 绑定