7

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

4

1 回答 1

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 项目,但如果需要也可以随意加载示例。然后构建项目。您可能需要更改目标构建以支持新的相机 API 以成功构建;在我的情况下,将目标更改为 API 级别 21。

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

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

于 2016-08-24T12:42:32.307 回答