关于Android OpenCV端口的任何缺点?

时间:2010-12-09 13:57:34

标签: android opencv swig android-ndk

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

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

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

1 个答案:

答案 0 :(得分:4)

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