android 人脸检测
- 概述
- Android SDK 中的 FaceDetector 介绍
- 人脸检测核心代码
- FaceDetector性能
- FaceDetector 的不足
概述
人脸检测是指从一副图片或者一帧视频中检测是否存在人脸。通过该技术手段可以判定有没有人脸出现在给定的图片中。注意它和人脸识别是有差异的,人脸检测解决的是照片中有没有人脸的问题,而人脸识别解决的是照片中的人脸是谁的问题。Android SDK 提供了人脸检测的接口,本篇博文介绍基于 Android SDK 实现人脸检测的方法。
Android SDK 中的 FaceDetector 介绍
Android SDK 中支持人脸检测,它提供了一个直接在位图上进行人脸检测的方法,这个 API 是android.media.FaceDetector,源文件路径是:
frameworks/base/media/java/android/media/FaceDetector.java
调用 findFaces 方法就可进行人脸检测,该方法返回检测到的人脸总数,并且会将每个”人脸”的信息保存在FaceDetector.Face 的数组中。每个 Face 都包含下面几点信息:
- 该 Face 为人脸的可信度.取值范围是 0~1,大于 0.3 则表明可信度较高。
- 双眼之间的距离
- 双眼中点的 x,y 坐标
- 脸部的欧拉角度,可用于判断抬头,侧脸的角度等。
识别流程是这样的:
1. 读取一张图片至 Bitmap,且该 Bitmap 必须是 565 格式。
2. 调用 findFaces 方法分析 Bitmap(注意待分析的 Bitmap 宽度必须是偶数),将探测到的人脸数据存储在一个FaceDetector.Face 数组中,并返回检测到的人脸总数。
人脸检测核心代码
- 读取一张图片至 Bitmap,且该 Bitmap 必须是 565 格式。
private Bitmap getBitmap(int resid) {BitmapFactory.Options bitmapOption = new BitmapFactory.Options();bitmapOption.inPreferredConfig = Bitmap.Config.RGB_565;Bitmap myBitmap = BitmapFactory.decodeResource(getResources(), resid,bitmapOption);return myBitmap;
}
- 调用 findFaces 方法分析 Bitmap
private int findFace(Bitmap bitmap){//保证 bitmap 的宽度为偶数if ((1 == (myBitmap.getWidth() % 2))) {myBitmap = Bitmap.createScaledBitmap(myBitmap,myBitmap.getWidth() + 1, myBitmap.getHeight(), false);}//设置最多检测多少个 Faceint maxFace = 2;FaceDetector mFaceDetector = new FaceDetector(bitmap.getWidth(),bitmap.getHeight(), maxFace);FaceDetector.Face[] mFace = new FaceDetector.Face[maxFace];// 实际检测到的脸数int faceCount = mFaceDetector.findFaces(bitmap, mFace);return faceCount;
}
FaceDetector性能
检测时间平均耗费2s 左右,下图是debug FaceDetector的时间戳信息。
FaceDetector 的不足
在人物面部显示不全,比如侧脸,或者部分衣帽遮挡脸部时,会导致检测结果不正确。比如下面这个美女侧脸图通过FaceDetector就没能检测出来。
android 人脸检测相关推荐
- android 人脸检测_Android人脸检测
android 人脸检测 With the release of Google Play services 7.8, Google has brought in the Mobile Vision A ...
- 深度学习自学(六):Android人脸检测环境配置等相关问题
Android人脸检测环境配置等相关问题 1.android studio 包查找不到 2.android studio 快捷键 搜索类的快捷键是Ctrl+N,搜索以后点击结果,可以跳到相应类的文件. ...
- android 人脸检测 对焦,Android API教程:人脸检测(上)
通过两个主要的API,Android提供了一个直接在位图上进行脸部检测的方法,这两个API分别是 android.media.FaceDetector和android.media.FaceDet ...
- Android人脸检测方案汇总
因为要用到Android本地相机人脸检测,检测到人脸再做进一步处理.这里只记录从相机中实时检测人脸功能.本文只是一个简单的汇总. 1. Android原生FaceDetectionListener 部 ...
- android人脸检测开发——使用GMV API(google mobile vision library)开发人脸检测功能
授人以鱼不如授人以渔:建议看以下官网资料! 从一张图片中检测人脸及脸部器官的教程:https://developers.google.cn/vision/android/detect-faces-tu ...
- android 人脸检测 facedec,智能访客系统中的人脸检测及方向判别算法.pdf
智能访客系统中的人脸检测及方向判别算法,人脸识别算法,人脸检测算法,opencv人脸识别算法,人脸识别算法有哪些,人脸识别pca算法,人脸比对算法,android人脸识别算法,adaboost人脸检测 ...
- Android人脸检测类FaceDetector
根据文档描述,输入图片必须为Bitmap RGB565格式. 人脸的检测方法是用双眼来检测人脸的位置,也就是说无法检测到嘴.侧脸等,双眼必须同时可见,并且眼镜会影响检测的效果. 实际上,FaceDet ...
- android 人脸检测 姿态估计
自带级联,有误检,能调用摄像头,返回opencv,很多函数没有 https://github.com/WangRain1/OpencvDemo 新的: https://github.com/mateu ...
- android 人脸检测代码,在Android实现人脸识别的详细过程
照相时,在预览画面上提示用户人脸的位置,并完成自动对焦等,是个错的应用; 下面是实现细节 我们知道在android的代码中已有人脸识别的底层算法代码,而且在framework层也封了调用的API函数 ...
最新文章
- 线程同步——内核对象实现线程同步——等待函数
- linux下挂载iscsi存储设备,linux下挂载ISCSI存储设备
- java.lang.LinkageError: JAXB 2.0 API is being loaded from the bootstrap classloader, but this RI(xxx
- Expression Blend实例动画-大坝水位升高演示
- MyBatis之优化MyBatis配置文件中的配置
- linux shell脚本EOF妙用
- STM32F407+CubeMX-使用TIM计算编码器的脉冲总数,并计算脉冲方向
- linux开发板 杭州迈冲,杭州迈冲科技MC9G20-DK评估开发板
- Set与WeakSet
- 2017.3.19 约数个数和 失败总结
- vue.js环境部署
- fcntl.h里没有open_国际高中课程里的IB课程 你了解多少?
- Postman 安装
- 实战案例!使用 Python 进行 RFM 客户价值分析!
- 数据可视化之美:桑基图的前世今生
- 【BUUCTF】CTF_Crypto 密码学_Quoted-printable(引用可打印)
- 嵌入式睡眠监控报警仪的研究及设计
- 基于基础c语言的水仙花数编程方法
- STM32启动代码学习
- 构造器(也称构造方法)