如何在android人脸检测中检查人脸检测的活跃度

时间:2016-07-15 12:42:58

标签: android android-camera face-detection

我正在为考勤系统创建一个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上我正在检查面部并裁剪它以进行进一步处理。

我搜索了一些活体样本,但没有运气,如果有人知道如何实现活力请帮忙。

1 个答案:

答案 0 :(得分:0)

您可以按顺序拍摄多张照片,看看它们是否以非显而易见的方式变化(例如,无翻译或旋转)。

问题在于,如果您担心游戏系统,并且现在可以向系统显示图片,那么没有什么能阻止其他人提供平板电脑< / em>或电子书阅读器,足够智能,可以向系统显示短动画。

如果可能的话,或许可以更有成效地拍摄可能来自不同POV的全身照片。这完全取决于Android应用程序的运行位置(例如自动徽章展位)。如果它在参加者的手机上运行并且你想确定他的身份,我恐怕你不能。

使用Android version 5,您可以尝试使用面部的z扫描。快速聚焦在几个平面上,在平截头体上相距5厘米。如果脸部附着在3-D头骨上,您将“看到”从鼻子向外同心移动的聚焦区域。除非你有一些非常平坦的参与者。你必须在随机距离上进行两到三次聚焦,这样人就不能离开相机来补偿。要估算聚焦,您可以尝试在图像中使用局部方差。

当然,这会限制您的应用与之兼容的型号。