Opencv4Android人脸识别之opencv_contrib编译

自Opencv3.0以来,Opencv的功能更加地模块化,一些还不够完善的功能模块目前还没有merge到主分支中,例如我们下面要说到的人脸识别模块,并不在主分支内,所以,如果我们要利用Opencv来进行人脸识别,我们还要亲自动手去编译。而网上很多的教程都是利用vs和cmake-gui进行编译,最后生成的是windows平台下的链接库,而很少有文章介绍针对Android平台的编译。下面简单介绍一下我在Ubuntu下的编译过程。

工具准备

  • cmake安装: sudo apt-get install cmake

  • Android NDK: 版本r10d(为什么是r10d,后面会说)

  • opencv 3.2.0:官网,百度云

  • opencv_contrib:CSDN,github(github中也带有编译教程,但没试过)

  • Build-opencv-for-android:CSDN,github,下载下来,将会利用build-android-opencv.sh这个脚本进行编译。

    Opencv4Android人脸识别之opencv_contrib编译_第1张图片

文件参数修改

  • 如果同时也想编译opencv的opencl支持,可以先参考这篇文章去修改参数,《为Android平台编译支持OpenCL的Opencv静态库》

  • 打开build-andriod-opencv.sh,修改编译的架构平台

    Opencv4Android人脸识别之opencv_contrib编译_第2张图片

编译

将opencv和opencv_contrib拷到build-android-opencv.sh的同级目录下。文件夹名字一定要是opencv和opencv_contrib,查看下面这个脚本的内容就知道了,当然,你也可以修改一下这个脚本,但我是选择修改文件夹名字。

./build-android-opencv.sh

坐等编译结果,如下图:

Opencv4Android人脸识别之opencv_contrib编译_第3张图片

编译成功之后,找到android_opencv这个文件夹:
头文件路径:./android_opencv/opencv/sdk/native/jni/include
静态库路径:./android_opencv/opencv/sdk/native/libs/armeabi-v7a
.
├── libopencv_aruco.a
├── libopencv_bgsegm.a
├── libopencv_bioinspired.a
├── libopencv_calib3d.a
├── libopencv_ccalib.a
├── libopencv_core.a
├── libopencv_datasets.a
├── libopencv_dnn.a
├── libopencv_dpm.a
├── libopencv_face.a
├── libopencv_features2d.a
├── libopencv_flann.a
├── libopencv_fuzzy.a
├── libopencv_highgui.a
├── libopencv_imgcodecs.a
├── libopencv_imgproc.a
├── libopencv_line_descriptor.a
├── libopencv_ml.a
├── libopencv_objdetect.a
├── libopencv_optflow.a
├── libopencv_phase_unwrapping.a
├── libopencv_photo.a
├── libopencv_plot.a
├── libopencv_reg.a
├── libopencv_rgbd.a
├── libopencv_saliency.a
├── libopencv_shape.a
├── libopencv_stereo.a
├── libopencv_stitching.a
├── libopencv_structured_light.a
├── libopencv_superres.a
├── libopencv_surface_matching.a
├── libopencv_text.a
├── libopencv_tracking.a
├── libopencv_video.a
├── libopencv_videoio.a
├── libopencv_videostab.a
├── libopencv_xfeatures2d.a
├── libopencv_ximgproc.a
├── libopencv_xobjdetect.a
└── libopencv_xphoto.a

附:

  • 这里再提供个链接给大家参考一下《opencv-contrib在cmake中出现下载错误的解决》。

  • 打开./android-cmake/android.toolchain.cmake这个文件,找到第219行如下:
    set( ANDROID_SUPPORTED_NDK_VERSIONS ${ANDROID_EXTRA_NDK_VERSIONS}
    -r10d -r10c -r10b -r10 -r9d -r9c -r9b -r9 -r8e -r8d -r8c -r8b -r8 -r7c -r7b -r7 -r6b -r6 -r5c -r5b -r5 "" )

    当然,你可以试一下,用r10d以上版本的NDK是否能编译。

你可能感兴趣的:(Opencv4Android)