Opencv4Android人脸识别之opencv_contrib编译

本文介绍如何在Ubuntu环境下使用CMake和Android NDK r10d编译OpenCV 3.2.0及其贡献模块,特别关注于为Android平台编译并包含人脸识别模块的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

自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:优快云github(github中也带有编译教程,但没试过)

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

    这里写图片描述

文件参数修改

编译

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

./build-android-opencv.sh

坐等编译结果,如下图:

这里写图片描述

编译成功之后,找到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是否能编译。

评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值