我正在开发一个安全相关的项目,需要检查是否检测到任何脸部,如果检测到脸部,则执行一些操作,如果脸部未检测到,则关闭应用程序。如何找出检测到的脸部是真实还是假的
一切都是完美的工作,我使用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)任何图书馆都是可用的,据说人脸真的有或没有。
如果有人有想法请提出,如何解决以上问题(任何代码可用,然后与我分享),反应表示赞赏!
如何使用自适应学习的方式来得出真实与虚假的图片/视频帧。
你尝试任何你的“可能的方式”?你想如何检测视频中的假脸? – Micka
我们如何使用适应性的学习方式来推断真实与虚假的图片/视频帧。 \t 我不想从视频中检测到,我想从相机检测,继续相机将运行并检查脸部是否被检测到 –
您可以使用瞳孔和虹膜检测并在分类器中验证它很难伪造眼睛在脸上。我不认为用几行代码就可以解决这个问题。你需要大量的图像分析知识才能达到这个目标 –