关于ios:ARFaceTrackingConfiguration:如何区分图片和真实面孔?

ARFaceTrackingConfiguration: How to distinguish pictures from real faces?

我们商店中有几个应用程序,它们使用ARFaceTrackingConfiguration来检测带有FaceID相机的iOS设备中的用户面部。

如您所见,ARKit还将跟踪放置在iPad Pro / iPhoneX前面的面孔图片,就好像它们是面孔一样。例如。从我们的一个应用程序中拍照(要复制,可以下载


目前无法在ARKit 3.0 API中执行此操作。

ARKit session's ARFaceTrackingConfiguration is constantly getting data from motion sensors at 1000 Hz, from front RGB camera at 60 Hz, and from IR camera at 15 Hz. And TrueDepth sensor is working while the session is running. You can't manually stop TrueDepth sensor in ARKit.

enter

Apple的TrueDepth模块的工作距离范围很窄,因为来自IR投影机的30K点必须具有确定的亮度,模糊度,覆盖范围和点大小,才能被ARKit有效使用。

使用此代码,您可以测试进程中是否涉及TrueDepth模块:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
@available(iOS 13.0, *)
class ViewController: UIViewController {

    @IBOutlet var sceneView: ARSCNView!

    override func viewDidLoad() {
        super.viewDidLoad()

        sceneView.session.delegate = self
    }
}

extension ViewController: ARSessionDelegate {

    func session(_ session: ARSession, didUpdate frame: ARFrame) {

        print(sceneView.session.currentFrame?.capturedDepthData?.depthDataQuality as Any)
    }
}

通常,每隔四帧打印一次深度数据(但有时间隙大于4帧):

enter