今天小小的研究了一下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人脸识别技术浅析相关推荐

  1. Android人脸识别技术

    Android人脸识别技术用到的底层库:android/external/neven/,framework 层:frameworks/base/media/java/android/media/Fac ...

  2. Android 人脸识别

    Android人脸识别技术,可以参考下面的网站. http://www.faceplusplus.com.cn/ 本项目使用的就是该网站的api. 项目具体使用的技术代码 /*** 用来压缩图片的方法 ...

  3. 虹软android工程师,虹软人脸识别技术公开课开讲!AI工程师如何快速进阶

    原标题:虹软人脸识别技术公开课开讲!AI工程师如何快速进阶 随着刷脸乘坐公交.公租房人脸识别管理系统.景区人证核验入园等创新应用的加速普及,人脸识别技术已经在广泛的行业.领域中得到使用.在见证人脸识别 ...

  4. 港中大教授研发DeepID人脸识别技术 准确率超99%

    http://mi.techweb.com.cn/tmt/2014-06-23/2049460.shtml 6月23日凌晨消息,香港中文大学教授汤晓鸥.王晓刚及其研究团队上周宣布,他们研发的DeepI ...

  5. 调用远程摄像头进行人脸识别_人脸识别技术植入手机APP

    随着物联网技术的日益成熟,我们看到已经有很多APP用到了人脸识别技术,特别是金融和互联网领域的应用纷纷加入了人脸识别.表示,人脸识别技术基于人的脸部特征信息进行身份识别,为互联网金融等行业解决在线多维 ...

  6. 连不上 GitHub 的朝鲜,也开发出了人脸识别技术

    By 超神经 场景描述:近日,朝鲜媒体<统一的回声>发布刊文,介绍了新开发的自研智能蓝天手机.文章中称,该款手机处理速度快,支持人脸识别和指纹解锁等功能.据朝鲜媒体早前报道,该智能手机的人 ...

  7. android人脸识别demo_零门槛解决Windows人脸识别应用开发难题

    自人脸识别免费SDK--ArcFace3.0上线以来,凭借对人脸识别.活体检测.年龄检测.性别检测等核心算法模型进行全面升级,大幅提升算法鲁棒性,显著降低接入门槛,同时支持Windows.iOS.An ...

  8. Android人脸识别开发入门--基于虹软免费SDK实现

    转自:http://blog.csdn.net/feishixin/article/details/77718680 引言 人工智能时代快速来临,其中人脸识别是当前比较热门的技术,在国内也越来越多的运 ...

  9. android人脸识别demo_C#开发实录:基于免费SDK实现人脸识别应用开发

    随着人脸识别技术应用范围不断扩展,如何在Windows C#上基于免费SDK实现人脸识别应用开发,正成为开发者们关心的话题之一. 对于该需求,我推荐虹软视觉开放平台的ArcFace 3.0,免费.离线 ...

最新文章

  1. hadoop1.x 与hadoop2.x 架构变化分析
  2. 查看和修改sql环境变量
  3. 前台开发之HTML定义语义化
  4. javascript Window 对象模型
  5. Solr学习笔记1(V7.2)
  6. 互联网企业安全高级指南3.6 需要自己发明安全机制吗
  7. 自定义值类型一定不要忘了重写Equals,否则性能和空间双双堪忧
  8. Hello Kubernetes快速交互实验手册
  9. 海报psd素材模板|周年海报,仪式感值得珍藏
  10. Using SQLite database in your Windows 10 apps
  11. Java记录 -4- 运算符 Operator
  12. 山东省计算机考试无法报名,12月20日开始报名!山东2020年3月全国计算机等级考试注意事项来咯...
  13. 关于hashcode和equals方法
  14. 如何下载Google Chromium源码。
  15. 用Python实现表格读写
  16. 修改Egg.js端口号
  17. idea生成文档时:编码GDK的不可映射字符
  18. Direct3D 11在windows7上提示创建d3d设备失败
  19. Chapter5 生长因子、受体和癌症
  20. 1.已知本原多项式,利用Matlb中的simulink构成m序列产生器。2.已知任意本原多项式,利用matlb软件编程求解其对应的m序列以及m序列产生过程。

热门文章

  1. iOS 静态度制作方法详细
  2. matlab第三方控件,第三方控件介绍
  3. 视不可当:信息图与可视化传播
  4. A1-2017级算法上机第一次练习赛 H 模式寻对
  5. 【296天】我爱刷题系列055(2017.11.28)
  6. 打印日志的10个建议
  7. android脚步--Relativelayout设置
  8. Infobright 数据仓库心得总结
  9. Cortex-M系列MCU最大亮点是低功耗
  10. php 通过坐标获取省市,PHP根据经纬度获取在范围坐标的数据