其实Android SDK从1.0版本中(API level 1)就已经集成了简单的人脸识别功能,通过调用FaceDetector 我们可以在Android平台上实现Bitmap人脸识别(包含多人脸)。
Tips: 自带的这个算法在检测上是存在很多的局限性的,是通过找图片中眼睛,返回眼睛的位置和两个眼睛之间的距离,从而可以粗略的计算出整个脸的大小。 局限性就是如果眼睛没有睁开就看不到眼睛。
实现的代码很简单就不做过多的解释 ,这里贴出检测的代码。
完整代码共享在文章最后的百度网盘。
先做一个简单的介绍
- 检测方案:通过查找人脸中的眼睛来标识人脸。
可通过函数public float eyesDistance ()
来获取两个眼睛的距离,
可通过public void getMidPoint(PointF point)
拿到两个眼睛中心的坐标。 bitmap检测的时候需要转换成RGB_565。文末详述。
1
2
3
4FaceDetector faceDet = new FaceDetector(bitmap.getWidth(),bitmap.getHeight(), MAX_FACES);
// 将人脸数据存储到facelist中
FaceDetector.Face[] faceList = new FaceDetector.Face[MAX_FACES];
faceDet.findFaces(bitmap, faceList);第一二行 构造检测器,第三行声明FaceDetector.Face数组第四行检测。
- 最后通过canvas 进行绘制。
DetecteSDK检测类
实现的功能是 传入一个 bitmap对象 返回一个检测完成绘制出面部的bitmap图像。
1 | package com.centaur.testutil; |
百度网盘地址:链接:http://pan.baidu.com/s/1boYfhuB 密码:jgnh