玩玩人脸识别

来源:互联网 发布:python格式化毫秒数 编辑:程序博客网 时间:2024/05/22 17:33

人脸识别

  • Android自带的API:FaceDetector

    • Step 1: 读取bitmap图片(API 只接受Bitmap)
      (拍照或者从相册中也可以)

      Bitmap sampleBmp=BitmapFactory.decodeResource(getResources(), R.drawable.sample1);
    • Step 2: 通过FaceDetector API进行人脸识别

      //FaceDetecor只能读取RGB 565格式的BitmapBitmap tmpBmp = inputImage.copy(Bitmap.Config.RGB_565, true);//新建FaceDetector 实例,FaceDetector faceDet = new FaceDetector(tmpBmp.getWidth(), tmpBmp.getHeight(), MAX_FACES);//MAX_FACES 搜索人脸个数// 调用findFaces方法,将数据储存在facelist中FaceDetector.Face[] faceList = new FaceDetector.Face[MAX_FACES];faceDet.findFaces(tmpBmp, faceList);

    找人脸的原理是:找眼睛。
    它返回的人脸数据face中,
    通过调用public float eyesDistance (),得到眼距
    public void getMidPoint (PointF point),得到两眼中心点位置。
    public float confidence () 可以返回该人脸数据的可信度(0~1),这个值越大,该人脸数据的准确度也就越高

    • Step3:对原图进行缩放,并在图上显示人脸框

    • 吐槽:
      A,只能接受Bitmap 格式的数据;
      B,只能识别双眼距离大于20 像素的人脸像(当然,这个可在framework层中修改);
      C,只能检测出人脸的位置(双眼的中心点及距离),不能对人脸进行匹配(查找指定的脸谱)。

  • 第三方
    • face++(他有在线API可调用,离线SDK)
    • 在线API:基础版API供免费调用测试和小规模使用(会尽力维护API服务稳定性,但不保证每次调用均会成功),企业版API相对基础版API在算法和稳定性方面会有更好的表现
    • 离线SDK包括人脸关键点定位等功能。
    • 网址:http://www.faceplusplus.com.cn/
0 0