如何向OpenCV4Android添加额外模块?

3

我现在正在使用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个回答

4
我认为你不能只是添加/包含contrib模块到OpenCV4Android的预构建库中。我建议你应该从源代码编译OpenCV+contrib。要这样做,你有两个选项:
选项1:按照这个步骤,你可以为目标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模块作为Python脚本的输入参数添加。
   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

这样,您将在< dir-to-store-result >内获得完整的OpenCV+contrib模块编译结果,其结构与OpenCV4Android相同。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接