基于 opencv3.3 Android 人脸检测

#视频演示

此demo 已经实现全屏 竖屏 横屏(90 度和270度) 检测,性能已经达到商业性能.
此demo的 源代码 未上传,请耐心等待

##视频截图

基于 opencv3.3 Android 人脸检测_第1张图片

以下是opencv人脸检测 教程 (给新手用的)
1.下载 opencv3.3
2.创建Android 工程
3.导入library library
地址 \OpenCV-android-sdk\sdk\java
4.复制 native)到工程根目录
native 地址: \OpenCV-android-sdk\sdk\native
5.gradle.properties 添加

android.useDeprecatedNdk=true

6.复制 \OpenCV-android-sdk\samples\face-detection 下的java代码 和 res 文件到自己的app对应位置
6.复制 \OpenCV-android-sdk\samples\face-detection\jni 到 app\src\main\java 下
7.复制 \OpenCV-android-sdk\sdk\native\libs 里面的 文件 到 app\src\main\java\jniLibs(没有就创建一个)
我只复制 armeabi和armeabi-v7a
8.复制 \OpenCV-android-sdk\samples\face-detection 下的java代码 和 res 文件到自己的app
8.修改 app\src\main\java\jni\Android.mk 文件,内容如下

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

#OPENCV_INSTALL_MODULES:=off
#OPENCV_LIB_TYPE:=SHARED
ifdef OPENCV_ANDROID_SDK
  ifneq ("","$(wildcard $(OPENCV_ANDROID_SDK)/OpenCV.mk)")
    include ${OPENCV_ANDROID_SDK}/OpenCV.mk
  else
    include ${OPENCV_ANDROID_SDK}/sdk/native/jni/OpenCV.mk
  endif
else
  include ../../../../native/jni/OpenCV.mk
endif

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

LOCAL_MODULE     := detection_based_tracker

include $(BUILD_SHARED_LIBRARY)

8.在app的 build.gradle 文件里面 的 Android 节点 添加

sourceSets.main.jni.srcDirs = []
//禁止自带的ndk功能
sourceSets.main.jniLibs.srcDirs = ['src/main/libs', 'src/main/jniLibs']
//重定向so目录为src/main/libs和src/main/jniLibs,原来为src/main/jniLibs

task ndkBuild(type: Exec, description: 'Compile JNI source with NDK') {
     
    Properties properties = new Properties()
    properties.load(project.rootProject.file('local.properties').newDataInputStream())
    def ndkDir = properties.getProperty('ndk.dir')

    if (org.apache.tools.ant.taskdefs.condition.Os.isFamily(org.apache.tools.ant.taskdefs.condition.Os.FAMILY_WINDOWS)) {
     
        commandLine "$ndkDir/ndk-build.cmd", '-C', file('src/main/jni').absolutePath
    } else {
     
        commandLine "$ndkDir/ndk-build", '-C', file('src/main/jni').absolutePath
    }
}

tasks.withType(JavaCompile) {
     
    compileTask -> compileTask.dependsOn ndkBuild
}

task ndkClean(type: Exec, description: 'Clean NDK Binaries') {
     
    Properties properties = new Properties()
    properties.load(project.rootProject.file('local.properties').newDataInputStream())
    def ndkDir = properties.getProperty('ndk.dir')

    if (org.apache.tools.ant.taskdefs.condition.Os.isFamily(org.apache.tools.ant.taskdefs.condition.Os.FAMILY_WINDOWS)) {
     
        commandLine "$ndkDir/ndk-build.cmd", 'clean', '-C', file('src/main/jni').absolutePath
    } else {
     
        commandLine "$ndkDir/ndk-build", 'clean', '-C', file('src/main/jni').absolutePath
    }
}

clean.dependsOn 'ndkClean'
  1. 在AndroidManifest.xml 添加












  1. 目录结构
    基于 opencv3.3 Android 人脸检测_第2张图片

你可能感兴趣的:(android,android,opencv,源代码)