您的位置:首页 > 产品设计 > UI/UE

Opencv for Android 3.2 + Android Studio 3.0 + ndk-build 实时人脸检测

2017-12-07 17:41 447 查看
一、环境搭建

1.Opencv SDK下载地址:https://opencv.org/releases.html;

2.搭建Opencv for Android环境参见:https://www.cnblogs.com/woaixingxing/p/7157761.html;

3.搭建Android Studio DNK环境参见:http://blog.csdn.net/tongseng/article/details/53005123。这一步是为了生成libdetection_based_tracker.so文件。samples里的人脸检测会用到这个so库,但是需要我们自己生成。

二、拷贝内容

1.OpenCV-android-sdk\samples\face-detection下的jni文件夹;

2.OpenCV-android-sdk\samples\face-detection\res下的raw文件夹;

3.OpenCV-android-sdk\samples\face-detection\res\layout下的文件;

4.OpenCV-android-sdk\samples\face-detection\src\org\opencv\samples\facedetect下的文件;

5.AndroidManifest.xml文件中你项目里没有的内容。特别是权限声明和保持横屏。

三、修改文件

1.Android.mk:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

OPENCV_CAMERA_MODULES:=on
OPENCV_INSTALL_MODULES:=on
OPENCV_LIB_TYPE:=SHARED

include E:/Resource/OpenCV-android-sdk/sdk/native/jni/OpenCV.mk

LOCAL_SRC_FILES  := DetectionBasedTracker_jni.cpp
LOCAL_C_INCLUDES += $(LOCAL_PATH)
LOCAL_LDLIBS     += -llog -ldl

LOCAL_MODULE     := detection_based_tracker

include $(BUILD_SHARED_LIBRARY)


其中OpenCV.mk的路径要注意下,如果“E:/Resource”写成“E:Resource”会报错:C:/Users/Administrator/AppData/Local/Android/Sdk/ndk-bundle/build//../build/core/prebuilt-library.mk:68:
*** target pattern contains no `%'.  Stop.

2.Application.mk中的APP_ABI指定CPU架构,可以填all生成所有支持的so库。如果CPU架构不对会报错:找不到so文件。
3.将DetectionBasedTracker_jni.cpp和DetectionBasedTracker_jni.h中所有org_opencv_samples_facedetect改成你的包名,注意将包名中的.换成_。不然会报错:nativeCreateObject方法找不到。

4.在app模块的build.gradle的android根目录下添加:

sourceSets {
main {
jni.srcDirs = []
}
}


不然会报错:Your project contains C++ files but it is not using a supported native build system.不要在gradle.properties中添加android.useDeprecatedNdk=true。

全部改好后在Terminal中使用ndk-build生成so库。

四、注意事项

1.如果应用报“Camera is not available (in use or does not exist)”,你需要在设置里为你的应用打开相机权限。

2.这个人脸检测需要横屏使用,不要竖着手机对着人脸抓耳挠腮。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: