您的位置:首页 > 移动开发 > Android开发

Opencv4Android人脸识别之opencv_contrib编译

2017-04-24 14:05 956 查看
自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:CSDNgithub(github中也带有编译教程,但没试过)

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



文件参数修改

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

打开build-andriod-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是否能编译。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息