如何找出检测到的人脸是真还是假
我正在开发一个与安全相关的项目,需要检查是否检测到任何人脸,如果检测到人脸,则执行一些操作,如果未检测到人脸则关闭应用程序。
一切都是完美的工作,我正在使用,这是实现的,在那个打开的相机和相机有一个方法名称是使用这种方法,我检测人脸。SurfaceView
SurfaceHolder.Callback
startFaceDetection
代码以供参考
public class SurfaceViewPreview extends SurfaceView implements SurfaceHolder.Callback {
private SurfaceHolder mHolder;
private Camera mCamera;
public SurfaceViewPreview(Context context, AttributeSet attrs) {
super(context, attrs);
setWillNotDraw(false);
mHolder = getHolder();
mHolder.addCallback(this);
mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
}
public void surfaceCreated(SurfaceHolder holder) {
try {
if (Camera.getNumberOfCameras() <= 0 || ContextCompat.checkSelfPermission(getContext(), Manifest.permission.WRITE_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED)
return;
mCamera = Camera.open(0);
mCamera.setPreviewDisplay(mHolder);
} catch (Exception e) {
e.printStackTrace();
if (this.mCamera != null) {
this.mCamera.release();
this.mCamera = null;
}
}
}
public void surfaceDestroyed(SurfaceHolder holder) {
if (Camera.getNumberOfCameras() <= 0 || ContextCompat.checkSelfPermission(getContext(), Manifest.permission.WRITE_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED)
return;
mCamera.stopPreview();
mCamera.release();
mCamera = null;
}
public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
if (Camera.getNumberOfCameras() <= 0 || ContextCompat.checkSelfPermission(getContext(), Manifest.permission.WRITE_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED)
return;
mCamera.startPreview();
mCamera.setFaceDetectionListener(new Camera.FaceDetectionListener() {
@Override
public void onFaceDetection(Camera.Face[] faces, Camera camera) {
// face is detected.
}
});
mCamera.startFaceDetection();
}
}
现在,问题,如果任何人类帖子,如果我向相机展示然后被检测为人类,但我想要真正的人脸检测而不是假海报脸。
处理我的要求的可能方法。
1)定期捕获10张图像并检查所有变化是否相同,这意味着静态面在那里(就像安装在墙上的海报一样)。
2)编写任何适当的算法,告诉检测到的人脸是真人或假脸。
3)任何图书馆都是可用的,据说人脸真的可用或不可用。
如果有人有想法,请建议,如何解决上述问题(任何代码都可用,然后与我分享),非常感谢您的回复!
如何使用适应性学习方法来总结真实与虚假的图片/视频帧。