我正在创建一个用于考勤系统的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上,我正在检查脸部并裁剪它以进行进一步的处理。
我搜索了一些样本来寻找活性,但没有运气,如果有人知道我如何实现活性,请帮助。
发布于 2016-07-15 12:54:29
您可以顺序拍摄多张图片,并查看它们是否以不明显的方式改变(例如,不平移或旋转)。
问题是,如果你担心玩这个系统,现在向系统展示一张图片是可行的,没有什么能阻止别人向系统展示平板电脑或电子书阅读器,智能到足以显示一个简短的动画。
如果有可能的话,拍一张完整的照片也许会更有成效,可能是从不同的POV拍摄的。这一切都取决于android应用程序的运行位置(例如自动徽章展位)。如果它在与会者的电话上运行,而你想确认他的身份,恐怕你不能。
使用Android version 5,您可以尝试使用z扫描面部.快速聚焦在几个平面上,间隔5厘米。如果面部附着在一个三维头骨上,你会“看到”一个集中的区域从鼻子向外向外运动。除非你有一些面容平平的与会者。你必须在任意距离下进行两三次聚焦,这样人就不能离开摄像机进行补偿。要估计聚焦,可以尝试在图像中使用局部方差。
当然,这将限制您的应用程序将兼容的模型。
https://stackoverflow.com/questions/38396435
复制相似问题