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

来源:互联网 发布:小猪cms生活通 编辑:程序博客网 时间:2024/06/05 11:14

一、环境搭建

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:=onOPENCV_INSTALL_MODULES:=onOPENCV_LIB_TYPE:=SHAREDinclude E:/Resource/OpenCV-android-sdk/sdk/native/jni/OpenCV.mkLOCAL_SRC_FILES  := DetectionBasedTracker_jni.cppLOCAL_C_INCLUDES += $(LOCAL_PATH)LOCAL_LDLIBS     += -llog -ldlLOCAL_MODULE     := detection_based_trackerinclude $(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.这个人脸检测需要横屏使用,不要竖着手机对着人脸抓耳挠腮。

阅读全文
0 0
原创粉丝点击