我现在正在使用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设置,请提供详细步骤。
答案 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相同。