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

一、环境搭建

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.这个人脸检测需要横屏使用,不要竖着手机对着人脸抓耳挠腮。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值