我们什么时候需要NDK for OpenCV Android

时间:2014-01-08 13:31:58

标签: android opencv android-ndk

我刚刚开始学习Android的OpenCV,我已经玩了一下它一切正常。

我安装了NDK并设法运行包含它的一些示例应用程序。

我不清楚我们需要什么NDK。我在文档中的任何地方都找不到它。

OpenCV功能是否在常规库2.4.8中不可用?

是否只是这样我们可以使用其他人提供的用c ++编写的模块,而无需在java中重写它们?

2 个答案:

答案 0 :(得分:5)

我一直在使用NDK进行申请,以下是我的     观察结果。

  1. 是的,它提供了使用大量c ++的优势 提供的模块。
  2. 如果你已经有点了             使用openCV进行计算机视觉应用程序编程的经验             在C ++中的库,你不必学习java中的新语法(可以很好             有时候很烦人。)
  3. 在你的应用程序中使用NDK可以在你方面给你一个轻微的上手 你进行图像处理时的性能是计算性的 要求很高(我不太确定这是因为openCV 为Android提供的库只是一个包装 相同的头文件和东西,应该几乎提供与NDK相同的性能。我从来没有真正比较过 表现自己,但已在各种博客中读到NDK更快)。
  4. 一件事     当你使用NDK从JAVA调用时,你真的要小心     无论是NDK还是其他方面,这些呼叫在性能方面都非常昂贵(需要仔细规划)。
  5. 将一些MAT参数从JAVA传递到NDK等等         头痛,但你可以找到一些解决方法。
  6. 根据您可能从各种来源以及您的编程优势中发现的这些和其他因素,您可以决定是否要使用NDK。从来没有真正有一套指导方针可以说你可以使用NDK,如果满足条件,那么人们就会从哪种编程风格开始,他们会更舒服。

答案 1 :(得分:2)

在Android文档中,他们建议在

的情况下使用NDK
# CPU-intensive operations that don't allocate much memory,
# such as signal processing, physics simulation, and so on.

如果您想要做的所有事情都可以使用OpenCV内置函数计算,那么您可能不需要NDK,因为OpenCV的处理例程已经在C / C ++中。

但是,如果你必须密集处理图像矩阵(我的意思是直接访问像素),你将使用NDK改善性能。