有没有简单的方法直接在我的Android应用程序上使用c / c ++源代码?

时间:2014-02-13 04:56:29

标签: android c++ image-processing android-ndk

我目前正在开发一个Android应用程序来评估不同方面的图像,我发现可以使用很多很棒的开源算法。

问题1:大多数算法是在c / c ++ / matlab语言上设计的,无法直接应用。 我搜索NDK是一个允许我们用其他语言开发android应用程序的工具,但设置程序非常复杂,我坚持了好几天。所以在我进一步研究之前,我想先问一下我是否可以像调用java库一样直接包含其他的c / c ++源代码?

问题2:例如,我想在我的应用程序中使用Point Matching算法的source code,但内部有很多文件,因为它只是源代码而不是库/插件。在我的Android应用程序中应用require函数的步骤是什么? (最理想的方法是盲目地将一些图像输入到算法中,并返回结果,如调用函数,我不必理解它的工作原理。)

2 个答案:

答案 0 :(得分:1)

简短版。 下载opencv4android库。在eclipse中导入它,看看是否一切正常(编译错误,输出等)。 其次,尝试导入面部检测应用程序并尝试了解它的工作原理。 它有一个java部分和一个原生部分。 为了理解它是如何工作的,你必须了解java如何与C ++交互,或多或少地如何工作NDK。 一个重要的方面是学习如何使用Java中定义的本机接口在C ++中创建接口。当你到达那里然后你可以尝试创建自己的应用程序。 之后你可以来这里询问具体问题。

答案 1 :(得分:0)

  1. 您无法直接使用其他C ++库,您必须首先使用NDK为Android构建它们。如果有为Android构建的库版本,那么当然您可以通过使用NDK链接到它来直接使用它。

  2. 这里有两个选项。首先,您为Android创建常规Java应用程序,编写C ++包装器以处理对本机端的调用,并使用NDK构建必要的源文件。你的java应用程序将使用JNI调用包装器,包装器将调用你的实际C ++函数,如Java-> C ++中的JNI包装器 - >你真正的C ++源代码。

  3. 第二个选项是完全原生的,这将省去Java,JNI调用和包装器。您可以直接访问源文件,就像编写桌面C ++应用程序一样。最后,您将不得不使用NDK构建,但无论如何都需要此步骤。

    作为建议,您还可以查看OpenCV以进行图像处理。它有为Android构建的库,您只需要链接它们。