【问题标题】:Any disadvantages about the Android OpenCV port?Android OpenCV 端口有什么缺点吗?
【发布时间】:2026-01-21 23:25:01
【问题描述】:

我之前曾将 OpenCV 与 Android 结合使用,我一直试图做的是在我的本机代码和我的 java 代码之间使用尽可能少的调用。但是,当我查看适用于 Android 的 OpenCV port 时,似乎他们只是为每个本机函数创建了一个包装函数,并从 java 调用它们。现在,除非我完全误解了 swig 包装器的原理和这个端口的整个想法,否则这不会比在本机代码中进行实际编码慢很多吗?我注意到在本机代码和 Java 代码之间传递数据真的很慢,所以我不明白为什么它似乎是这个端口中最正常的事情。

我自己确实使用过它,但我只是决定忽略所有包装器并按原样使用代码,并使用 Android 教程提供的常规方式创建自己的包装器。

所以我的问题是,我对缺点的看法是错误的吗?或者他们真的在那里吗?在这方面使用 OpenCV 的真正优势是什么?我知道这些问题有些非正式,但我希望你们能帮助我。

【问题讨论】:

    标签: android opencv swig android-ndk


    【解决方案1】:

    我不能给你你正在寻找的答案,但我的想法是:有很多 JNI 层的例子,它们包装了每个本机函数 - OpenGL、Android 的 Canvas 等。通过 JNI 调用比工作慢完全在本机代码中,但问题是它对具体应用程序有什么影响吗?我相信在大多数情况下,与在本机函数中花费的时间相比,这个时间损失是可以忽略的。不过,我更喜欢在 Android 应用程序的本机代码中做尽可能多的工作,这主要不是因为执行速度更快,而是因为与 C 和 C++ 相比,Java 是一种笨拙的语言。

    【讨论】: