检测移动应用程序中拍摄的图片是否为图片。

3

我正在开发一个人脸识别应用程序,用户拍摄照片并将其发送到服务器进行识别。

我需要添加一个验证功能,确保用户拍摄真实的人物照片而非另一张图片。我尝试了眨眼检测的功能,即等待眼睛眨动并在眼睛眨动后立即拍摄,但由于在拍摄过程中手机晃动时会误判为眨眼,所以此方法并不可靠。

在这里想请教是否有办法可以检测用户是否在拍摄另一张图片。任何想法都会有所帮助。

我正在使用React Native来构建Android和iOS应用程序。

先行致谢。


这是一个有趣的问题。虽然我不是专家,但乍一看似乎可以应用边缘检测,如果所有的边缘同时移动,那么就意味着设备被摇动了,如果只有部分边缘移动,那么就意味着有东西在设备前面移动。因此,你需要等待某些边缘的移动,而不是全部移动。 - Arik Segal
@ArikSegal:是的,看起来像是一个选项,让我试试看能否实现它。 - Saraz
非常有趣的问题 @Saraz - abhikumar22
1
FYI:即使是谷歌的人脸识别技术也会被你的照片绕过。因此,我认为没有任何值得尝试的方法可以克服这个问题。 - Vladyslav Matviienko
我猜这只是一件难以实现的事情。你不能仅依靠检测图片的边缘,因为我可以有一张足够大让你的相机完全覆盖的图片。你的问题不仅仅是人脸识别,还包括运动检测。在满足所有这些要求之后,我建议你研究OpenCV来解决这个问题。 - Minh Dao
显示剩余2条评论
2个回答

1

感谢您的支持。

最终我通过眨眼技巧解决了它。这是我使用的一个小算法:

打开相机,点击捕获按钮:

相机检测视野中是否有人脸并等待眨眼。如果双眼的眨眼概率都达到90%,则等待200毫秒。再次检测人脸,确保眼睛张开的概率大于90%,最后进行拍照。

这是一个简单却有效的技巧。

祝好


能否请您分享示例代码,我需要实现相同的功能。 - Tara

0
在一些iOS 11.1以上的iPhone上,有一个所谓的trueDepthCamera用于Face ID。通过它(或后置双摄像头系统),您可以捕获带深度图的图像。您可以利用这个功能来查看人脸是否平坦(从图像中捕获)或者是否有正常的面部轮廓。在这里查看...

要欺骗它,需要设计一个3D人脸模型。

但是它只适用于少数iPhone型号,我不知道Android如何。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接