基于 opencv3.3 Android 人脸检测
2017-12-21 10:48
435 查看
视频演示
此demo 已经实现全屏 竖屏 横屏(90 度和270度) 检测,性能已经达到商业性能.此demo的 源代码 未上传,请耐心等待
重写过的demo下载
视频截图
以下是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'
在AndroidManifest.xml 添加
<supports-screens android:anyDensity="true" android:largeScreens="true" android:normalScreens="true" android:resizeable="true" android:smallScreens="true"/> <uses-permission android:name="android.permission.CAMERA"/> <uses-feature android:name="android.hardware.camera" android:required="false"/> <uses-feature android:name="android.hardware.camera.autofocus" android:required="false"/> <uses-feature android:name="android.hardware.camera.front" android:required="false"/> <uses-feature android:na 4000 me="android.hardware.camera.front.autofocus" android:required="false"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.READ_PHONE_STATE"/> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
目录结构
相关文章推荐
- VLC for Android 基于 Opencv 对 RTSP视频 实时人脸检测
- SmileyFace——基于OpenCV的人脸人眼检测、面部识别程序
- Opencv for Android 3.2 + Android Studio 3.0 + ndk-build 实时人脸检测
- 基于QT和OpenCV的人脸检测识别系统(2)
- (学习笔记二)——基于opencv人脸检测原理及实现
- Python基于OpenCV的人脸检测
- 如何使基于OpenCV库的人脸检测系统在其它机器上运行
- 基于opencv的人脸检测的web应用
- android opencv人脸检测程序
- 基于opencv人脸检测原理及实现
- 基于OpenCV的简单的人脸检测
- 基于OpenCV的人脸检测总结
- OpenCV + python 实现人脸检测(基于照片和视频进行检测)
- OpenCV on Android 开发(2)实现实时人脸检测
- 基于python OpenCV实现动态人脸检测
- python 调用摄像头,基于opencv 的人脸检测实现
- openCV 人脸检测在 Android 中的应用
- 基于OpenCV读取摄像头进行人脸检测和人脸识别
- 基于Face++实现的人脸检测(年龄检测)Android程序
- 基于OpenCV的人脸检测代码