前言

Android 的人脸检测在 Android level 1 中就有了,其用法和效果也都还可以。本篇文章简单介绍 Android 的人脸检测。

FaceDetector

Android 的人脸检测主要用的类有 FaceDetector,主要代码如下:

 public void faceDetector(Bitmap faceBitmap){      Bitmap bitmap = faceBitmap.copy(Bitmap.Config.RGB_565,true);      int maxFaceNume = 3;      FaceDetector faceDetector = new FaceDetector(bitmap.getWidth(),bitmap.getHeight(),maxFaceNume);      FaceDetector.Face[] faces1 = new FaceDetector.Face[maxFaceNume];      int faceNum = faceDetector.findFaces(bitmap,faces1);      if (faces1 == null || faces1.length < 1) {        return;      }      float eyesDistance = 0f;      for (int i = 0; i < faceNum; i++) {        PointF eyeMidPoint = new PointF();//两眼的中点距离        faces1[i].getMidPoint(eyeMidPoint);//两眼之间的距离        eyesDistance = faces1[i].eyesDistance();        float distanceX = 1.1f * eyesDistance;        float distanceTop = 1.4f * eyesDistance;        float distanceBottom = 2.0f * eyesDistance;        float left = eyeMidPoint.x - distanceX;        float right = eyeMidPoint.x + distanceX;        float top = eyeMidPoint.y - distanceTop;        float bottom = eyeMidPoint.y + distanceBottom;        RectF rectF = new RectF();        rectF.set(left, top, right, bottom);      }    }

注意:

第 2 行,把要检测的图片转换成 RGB_565 ,这个转换是必须的,否则将不能识别。具体的原因笔者也不是太清楚。不过别的人脸检测也需要类似的转换,比如, Opencv 需要将图片转换成灰度图片才能检测。

第 3 行,设置最多检测到的人脸数,注意,并不是实际检测到的人脸数。第 7 行的 faceNum 才是检测到的实际的人脸数。

第 5,6,7 行,是检测的主要代码。

第 14 到 28 行,是得到检测的人脸的矩形范围。可以利用此矩形自定义一个空间框处人脸。

结语

比较常见的人脸检测还有 Opencv,据说 Opencv 的人脸检测算法比 Android 的效率要高,笔者试了一下确实要快一些,但是检测的效果有些不好。下周仔细研究一下,下篇文章将介绍 Opencv 的人脸检测。

更多相关文章

  1. android 随手记-画虚线
  2. Android高手进阶教程(三)之----Android(安卓)中自定义View的应用
  3. Android之从Browser中打开本地的应用程序&微信检测是否有对应app
  4. android Rect类的使用
  5. android 笔记 --- Android(安卓)Shadow 阴影制作
  6. Android高手进阶教程(三)之----Android(安卓)中自定义View的应用
  7. Android(安卓)中的Intent的某些用法
  8. Android(安卓)图像处理资料
  9. android中如何给button加圆角

随机推荐

  1. Android(安卓)Push Notification实现信息
  2. Android/Ophone应用程序数字签名
  3. 搭建Android开发环境与开发工具选择
  4. 如果你想用对话框代替一个activity的话,可
  5. Android adb 常用技巧
  6. android EditText控件自动获取焦点弹出键
  7. android中和activity生命周期相关的那些
  8. 离线安装 Android 4.0 SDK
  9. Android materialDesign 风格阴影 改变阴
  10. Android 软键盘弹出,界面整体上移