War*_*ead 6 opencv android-ndk opencv4android
有没有办法在android中使用opencv contrib模块?我特意使用文本模块.这些模块有没有android lib.我的代码在桌面上工作,我试图将我的代码迁移到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
Run Code Online (Sandbox Code Playgroud)
除此之外,您可能会遇到一两个错误。我需要安装一些缺少的组件,以便解决缺少的组件,但这对您来说可能有所不同(我研究了错误并了解我需要其他组件)
brew install ninja
brew install oxygen
brew install ant
Run Code Online (Sandbox Code Playgroud)
我还遇到了一个错误,一个模块请求需要在源代码中声明以下内容(或使用编译器标志):
#define SOLARIS_64BIT_ENABLED
Run Code Online (Sandbox Code Playgroud)
您可以做的另一件事是删除 contrib 文件夹中您在编译期间可能不感兴趣的其他模块。只需包含您想要的模块即可,希望这些模块是好的。我只是通过从 /modules 文件夹中删除一两个,然后重新运行 python 脚本来完成此操作。
需要最终的 python 脚本来运行构建。我在主源代码树和 contrib 文件夹旁边创建了一个目录。
OpenCVSource
-> opencv
-> opencv_contrib
-> android_opencv_build
Run Code Online (Sandbox Code Playgroud)
下面的调用是从我想要进行构建的目录进行的,因此我更改为该目录调用如下:
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
Run Code Online (Sandbox Code Playgroud)
这仅构建使用该库所需的 .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 模块(或者如果您出于其他原因构建它,则不会),因此您可能会在构建过程中遇到其他不太稳定的错误,需要注意。这是没有办法的,但人们可以随意向其他人的解决方案添加评论,如果他们找到了解决方案,这篇文章可以帮助他们解决问题。
| 归档时间: |
|
| 查看次数: |
1828 次 |
| 最近记录: |