功能背景:
市面的人脸闸机种类很多,在前端独立运行模式下的apk都大致一致:
【1】本地登记照片,注册人脸;
【2】1:1比对(两个相片比较相似度);
【3】1:N比对(动态人脸抓取后和N 个人脸的库比对);
没有和人脸中心通信的逻辑,也没有记录验证记录,可能有语音报读验证结果。
主体框架:
几个注意点:
【1】检测逻辑必须在子线程,因为涉及摄像头数据截图处理判定等,耗时较多,不能拖慢主线程;
【2】人脸算法,采用SDK方式,外包商提供,按序列号注册License;
【3】人脸事件抽象为几个典型时机(验证通过、陌生人脸等等),用设计模式中得观察者模式实现几类事务的处理,(FaceEventWatcher), 比较优雅(开关闸机,报读识别到的人名等等);
【4】识别分数阈值,需要匹配人脸算法,一般常见的是0.80;
附属资料:
【1】Android Looper和Handler
http://www.cnblogs.com/tt_mc/archive/2012/01/30/2331876.html
【2】一个第三方图片裁剪库,封装得不错,用于人脸注册登记时旋转、翻转、裁剪照片,凸显人脸部分:
不推荐使用crop intent来裁剪图像,这是相机应用的内部API,自己调用可能会有不兼容(尤其在某些安卓开发板)。
https://github.com/mariotaku/PickNCrop