使用OpenCv contrib模块的android

时间:2015-05-03 20:52:36

标签: opencv android-ndk opencv4android

有没有办法在android中使用opencv contrib模块?我特意使用文本模块。这些模块有没有android lib。我有我的代码在桌面上工作,我试图将我的代码迁移到android。任何见解都是gr8。

2 个答案:

答案 0 :(得分:2)

我也遇到了解决这些问题的方法。我想我会在那里找到一个相关的问题,并为社区做出回应,以防其他人也在寻找类似于这个和我的问题的解决方案。编辑在Macbook Retina 13“上完成。

提供的说明有些不完整,还需要执行其他步骤才能获得最终产品。

一开始,您将遵循在线概述的标准程序

$ cd <opecv_directory>
$ mkdir build
$ cd <opencv_build_directory>
$ cmake -D OPENCV_EXTRA_MODULES_PATH=<opencv_contrib>/modules <opencv_source_directory>
$ make -j5
$ make install

除此之外,您可能会遇到一两个错误。我需要安装一些缺少的组件才能找到遗漏的东西,但这可能会有所不同(我研究了错误,并了解我需要其他组件)

brew install ninja
brew install oxygen
brew install ant

我还遇到一个错误,一个模块要求在源代码中声明以下内容(或使用编译器标志):

#define SOLARIS_64BIT_ENABLED

您可以做的另一件事是删除您在编译期间可能不感兴趣的contrib文件夹中的其他模块。只需包含您想要的模块,希望这些模块是好的。我这样做只需从/ modules文件夹中删除一两个,然后重新编写python脚本。

运行构建需要最终的python脚本。我在主源树和contrib文件夹旁边创建了一个目录。

OpenCVSource
  -> opencv
  -> opencv_contrib
  -> android_opencv_build

下面的调用是从我想要进行构建的目录中进行的,所以我改为目录。调用如下:

python ../opencv/platforms/android/build_sdk.py --extra_modules_path ../opencv_contrib/modules --ndk_path <your-path-to-ndk-top-level-folder> --sdk_path <your-path-to-sdk-top-level-folder> ./ ../opencv

这只构建了使用该库所必需的.so文件,但它不会构建使用新二进制文件所需的.jar文件。为了做到这一点,导航到你的构建文件夹(我看到的是android_opencv_build / OpenCV-android-sdk)

以标准方式将此项目加载到Eclipse中,并将现有的Android项目导入工作区。您真的只需要/ sdk项目,但如果需要,也可以随意加载样本。然后构建项目。您可能需要更改目标构建以支持新的Camera API以便成功构建;在我的情况下,将目标更改为API级别21。

然后,您将在项目的/ bin目录中找到.jar文件。在android_opencv_build / OpenCV-android-sdk / sdk / native / jni /中找到的.jar和.so文件包含必要的.so文件,您需要将这些文件包含在此jar的projects / lib文件夹中。

现在你应该拥有你需要的一切。由于我们正在使用contrib模块(或者如果您出于其他原因而构建它),您可能会遇到构建过程中的其他错误,这些错误不太稳定且需要注意。这没有任何帮助,但人们可以随意添加评论给其他人的解决方案和这篇文章,以帮助他们解决它们,如果他们找到了解决方案。

答案 1 :(得分:1)

我遇到了同样的问题,经过一些工作后遇到了一篇非常好的可自行解释的文章来构建带有Extra模块的opencv。相同的链接是here

如果有人想使用已经构建的带有contrib额外模块的opencv master,他们可以随意使用我的repo,同样的链接是here,本文仅适用于windows ,仅仅是为了提供信息,因为我没有在Mac上跟进。