我正在为考勤系统创建一个Android应用程序,我会在检测到脸部后立即捕获图片。我能够实现这一点,但只有一个问题,这个系统可以伪造员工的照片,因为现在没有活力检查。
mCamera.setFaceDetectionListener(new Camera.FaceDetectionListener(){
@Override
public void onFaceDetection(final Camera.Face[]faces,Camera camera){
if(faces!=null&&faces.length>0){
try{
if(lastCaptureTiume+10000<=System.currentTimeMillis()){
mCamera.takePicture(null,null,jpegCallback);
lastCaptureTiume=System.currentTimeMillis();
}
}
catch(Exception e)
{
}
}
});
}
在jpegCallback上我正在检查面部并裁剪它以进行进一步处理。
我搜索了一些活体样本,但没有运气,如果有人知道如何实现活力请帮忙。
答案 0 :(得分:0)
您可以按顺序拍摄多张照片,看看它们是否以非显而易见的方式变化(例如,无翻译或旋转)。
问题在于,如果您担心游戏系统,并且现在可以向系统显示图片,那么没有什么能阻止其他人提供平板电脑< / em>或电子书阅读器,足够智能,可以向系统显示短动画。
如果可能的话,或许可以更有成效地拍摄可能来自不同POV的全身照片。这完全取决于Android应用程序的运行位置(例如自动徽章展位)。如果它在参加者的手机上运行并且你想确定他的身份,我恐怕你不能。
使用Android version 5,您可以尝试使用面部的z扫描。快速聚焦在几个平面上,在平截头体上相距5厘米。如果脸部附着在3-D头骨上,您将“看到”从鼻子向外同心移动的聚焦区域。除非你有一些非常平坦的参与者。你必须在随机距离上进行两到三次聚焦,这样人就不能离开相机来补偿。要估算聚焦,您可以尝试在图像中使用局部方差。
当然,这会限制您的应用与之兼容的型号。