android人脸识别技术浅析
今天小小的研究了一下android自带的人脸识别技术的API。这里做一下总结。
首先明白android提供的这套接口功能是比较弱的,它是通过检测两个眼睛的存在来判断是否存在人脸,所以对于侧身的,戴眼镜的人脸识别效果不佳。在使用上面主要是两个类,一个是FaceDetector,这个类是最主要的,它里面有完成检测识别的具体方法。另外一个类就是FaceDetector.Face。这是FaceDetect的内部类,主要用来存放最后检测到的人脸的坐标信息。
使用步骤:
第一步、把要检测的bitmap转换成RGB565格式的。
这个是必须的,这套API只能对RGB565格式的做识别。转换代码如下
BitmapFactory.Options BitmapFactoryOptionsbfo = new BitmapFactory.Options();
BitmapFactoryOptionsbfo.inPreferredConfig = Bitmap.Config.RGB_565;
myBitmap = BitmapFactory.decodeResource(你要转换的bitmap, BitmapFactoryOptionsbfo);
第二步、生成一个新的FaceDetector对象,需要传入待检测位图的宽和高,以及最多检测几张人脸。
myFaceDetect = new FaceDetector(imageWidth, imageHeight, numberOfFace); //imageWidth是待检测位图的宽,imageHeight是待检测位图的高,n umberOfFace是最多检测几张人脸。
第三步、开始检测
当然在检测前必须创建FaceDetect.Face对象。通常会创建一个数组。
myfaces = new FaceDetect.Face【num】;
int num = myFaceDetect .findFace(bitmap , myfaces);返回值是实际检测到的人脸数目。
第四步、绘制脸部方框。
这一步,主要是看你识别出来之后做什么用了。识别出来的人脸信息存放在myfaces数组中,包含着每张人脸的眼睛中点坐标以及眼睛距离。如果要把识别出来的信息 在视图上绘制出来,那么就可以绘制方框图。使用myfaces元素的face.getMidPoint()方法可以获得中点坐标;eyesDistance()方法可以获得人眼之间的距离。
下面是一个简单的源码。
package star.app.facedetect;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.PointF;
import android.media.FaceDetector;
import android.media.FaceDetector.Face;
import android.view.View;
public class ViewMain extends View{
private int imageWidth, imageHeight;
private int numberOfFace = 5;
private FaceDetector myFaceDetect;
private FaceDetector.Face[] myFace;
float myEyesDistance;
int numberOfFaceDetected;
Bitmap myBitmap;
public ViewMain(Context context) {
super(context);
BitmapFactory.Options BitmapFactoryOptionsbfo = new BitmapFactory.Options();
BitmapFactoryOptionsbfo.inPreferredConfig = Bitmap.Config.RGB_565;
myBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.test, BitmapFactoryOptionsbfo);
imageWidth = myBitmap.getWidth();
imageHeight = myBitmap.getHeight();
myFace = new FaceDetector.Face[numberOfFace];
myFaceDetect = new FaceDetector(imageWidth, imageHeight, numberOfFace);
numberOfFaceDetected = myFaceDetect.findFaces(myBitmap, myFace);
}
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
canvas.drawBitmap(myBitmap, 0, 0, null);
Paint myPaint = new Paint();
myPaint.setColor(Color.RED);
myPaint.setStyle(Paint.Style.STROKE);
myPaint.setStrokeWidth(3);
for(int i=0; i < numberOfFaceDetected; i++)
{
Face face = myFace[i];
PointF myMidPoint = new PointF();
face.getMidPoint(myMidPoint);
myEyesDistance = face.eyesDistance();
canvas.drawRect(
(int)(myMidPoint.x - myEyesDistance),
(int)(myMidPoint.y - myEyesDistance),
(int)(myMidPoint.x + myEyesDistance),
(int)(myMidPoint.y + (myEyesDistance+30)),
myPaint);
}
}
}
android人脸识别技术浅析相关推荐
- Android人脸识别技术
Android人脸识别技术用到的底层库:android/external/neven/,framework 层:frameworks/base/media/java/android/media/Fac ...
- Android 人脸识别
Android人脸识别技术,可以参考下面的网站. http://www.faceplusplus.com.cn/ 本项目使用的就是该网站的api. 项目具体使用的技术代码 /*** 用来压缩图片的方法 ...
- 虹软android工程师,虹软人脸识别技术公开课开讲!AI工程师如何快速进阶
原标题:虹软人脸识别技术公开课开讲!AI工程师如何快速进阶 随着刷脸乘坐公交.公租房人脸识别管理系统.景区人证核验入园等创新应用的加速普及,人脸识别技术已经在广泛的行业.领域中得到使用.在见证人脸识别 ...
- 港中大教授研发DeepID人脸识别技术 准确率超99%
http://mi.techweb.com.cn/tmt/2014-06-23/2049460.shtml 6月23日凌晨消息,香港中文大学教授汤晓鸥.王晓刚及其研究团队上周宣布,他们研发的DeepI ...
- 调用远程摄像头进行人脸识别_人脸识别技术植入手机APP
随着物联网技术的日益成熟,我们看到已经有很多APP用到了人脸识别技术,特别是金融和互联网领域的应用纷纷加入了人脸识别.表示,人脸识别技术基于人的脸部特征信息进行身份识别,为互联网金融等行业解决在线多维 ...
- 连不上 GitHub 的朝鲜,也开发出了人脸识别技术
By 超神经 场景描述:近日,朝鲜媒体<统一的回声>发布刊文,介绍了新开发的自研智能蓝天手机.文章中称,该款手机处理速度快,支持人脸识别和指纹解锁等功能.据朝鲜媒体早前报道,该智能手机的人 ...
- android人脸识别demo_零门槛解决Windows人脸识别应用开发难题
自人脸识别免费SDK--ArcFace3.0上线以来,凭借对人脸识别.活体检测.年龄检测.性别检测等核心算法模型进行全面升级,大幅提升算法鲁棒性,显著降低接入门槛,同时支持Windows.iOS.An ...
- Android人脸识别开发入门--基于虹软免费SDK实现
转自:http://blog.csdn.net/feishixin/article/details/77718680 引言 人工智能时代快速来临,其中人脸识别是当前比较热门的技术,在国内也越来越多的运 ...
- android人脸识别demo_C#开发实录:基于免费SDK实现人脸识别应用开发
随着人脸识别技术应用范围不断扩展,如何在Windows C#上基于免费SDK实现人脸识别应用开发,正成为开发者们关心的话题之一. 对于该需求,我推荐虹软视觉开放平台的ArcFace 3.0,免费.离线 ...
最新文章
- hadoop1.x 与hadoop2.x 架构变化分析
- 查看和修改sql环境变量
- 前台开发之HTML定义语义化
- javascript Window 对象模型
- Solr学习笔记1(V7.2)
- 互联网企业安全高级指南3.6 需要自己发明安全机制吗
- 自定义值类型一定不要忘了重写Equals,否则性能和空间双双堪忧
- Hello Kubernetes快速交互实验手册
- 海报psd素材模板|周年海报,仪式感值得珍藏
- Using SQLite database in your Windows 10 apps
- Java记录 -4- 运算符 Operator
- 山东省计算机考试无法报名,12月20日开始报名!山东2020年3月全国计算机等级考试注意事项来咯...
- 关于hashcode和equals方法
- 如何下载Google Chromium源码。
- 用Python实现表格读写
- 修改Egg.js端口号
- idea生成文档时:编码GDK的不可映射字符
- Direct3D 11在windows7上提示创建d3d设备失败
- Chapter5 生长因子、受体和癌症
- 1.已知本原多项式,利用Matlb中的simulink构成m序列产生器。2.已知任意本原多项式,利用matlb软件编程求解其对应的m序列以及m序列产生过程。