如何向OpenCV4Android添加额外的模块?

时间:2017-01-19 21:10:47

标签: opencv android-ndk cmake opencv4android

我现在正在使用NDK来实现图像处理方法,我想将一些额外的模块(如xphoto和matlab)导入OpenCV,这样我就可以将额外的库包含到我的cpp文件中。

我已经下载了额外的模块。这些模块看起来像这样:

├── CONTRIBUTING.md
├── doc
├── LICENSE
├── modules
├── README.md
└── samples

并且modules文件夹如下所示:

modules
├── aruco
├── bgsegm
├── bioinspired
├── ccalib
├── cnn_3dobj
├── contrib_world
├── cvv
├── datasets
├── dnn
├── dnns_easily_fooled
├── dpm
├── face
├── freetype
├── fuzzy
├── hdf
├── line_descriptor
├── matlab
├── optflow
├── phase_unwrapping
├── plot
├── README.md
├── reg
├── rgbd
├── saliency
├── sfm
├── stereo
├── structured_light
├── surface_matching
├── text
├── tracking
├── xfeatures2d
├── ximgproc
├── xobjdetect
└── xphoto

由于我不太熟悉配置CMake设置,请提供详细步骤。

1 个答案:

答案 0 :(得分:3)

我认为你不能只为OpenCV4Android的预建库添加/包含contrib模块。我会说你应该从源代码编译OpenCV + contrib。为此,您有两种选择:

选项1:遵循此steps,您可以为目标ABI编译OpenCV + contrib。

选项2:你可以使用OpenCV的python交叉编译脚本,它可以为许多可用的ABIS(armeabi-v7a,armeabi,arm64-v8a,x86_64,x86,mips64和mips)编译OpenCV + contrib,以下步骤。

- 下载/克隆OpenCV和额外的contrib模块源代码。

- 然后,你应该运行这个命令行来为所有提到的ABIS编译OpenCV,添加Opencv contrib模块作为pyhton脚本的输入参数。

   python ../opencv/platforms/android/build_sdk.py  --extra_modules_path ../opencv_contrib/modules <dir-to-store-result> ../opencv

如果你没有提供Android SDK和NDK的路径,你的环境变量,以便你的构建系统知道它们的位置,你也可以将它们作为输入参数添加到python脚本。

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> <dir-to-store-result> ../opencv

这样你就可以在&lt;里面完成一个完整的OpenCV + contrib模块编译。 dir-to-store-result&gt;,结构与OpenCV4Android相同。