android - 为 Android 使用 OpenCv contrib 模块

标签 android opencv android-ndk

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

最佳答案

我在找出这些问题的解决方案时也遇到了问题。我想我会在那里找到一个相关的问题并为社区做出回应,以防其他人也在寻找与我的问题类似的解决方案。编译是在 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 中)

通过将现有 Android 项目导入工作区,以标准方式将此项目加载到 Eclipse 中。您实际上只需要/sdk 项目,但如果需要,也可以随意加载示例。然后构建项目。您可能需要更改目标构建以支持新的相机 API 才能成功构建;在我的例子中,将目标更改为 API 级别 21。

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

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

关于android - 为 Android 使用 OpenCv contrib 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30019263/

相关文章:

python - 如何使用 OpenCV 使用 Python 将视频捕获的输出提供给窗口?

java - 从 Android Studio 上的 EditText 获取十进制数

Android,onPrepareDialog 更新参数化字符串不更新。

image-processing - 用于识别二维特征的图像处理

android - Android NDK 路径中的反斜杠使 QT 应用程序无法部署

java - Voip电话在android中开发

android-ndk - 如何将采样率从 AV_SAMPLE_FMT_FLTP 转换为 AV_SAMPLE_FMT_S16?

android - 如何向 Android 应用程序添加聊天功能?

android - 使用 OkHttp 的意外主机

opencv - 视频错误 : V4L: can't find camera device