适用于iPhone X的原始深度贴图SDK

我做了一些搜索,发现了各种各样的例子,关于iPhone X Face ID的文档,以及它如何用于身份validation,动画表情符号等各种function。

想要检查是否有API / SDK来获取从iPhone X传感器到应用程序的原始深度图?

根据我的理解,深度计算是基于投影模式完成的。 这可用于获取传感器前方任何物体的深度剖面。 (可能取决于对象的纹理。)

您至少需要Xcode 9.1中的iOS 11.1 SDK(在撰写本文时都处于测试阶段)。 有了它, builtInTrueDepthCamera成为用于选择捕获设备的相机类型之一:

 let device = AVCaptureDevice.default(.builtInTrueDepthCamera, for: .video, position: .front) 

然后,您可以继续使用TrueDepth摄像头设备设置AVCaptureSession ,并且可以使用该捕获会话来捕获深度信息,就像使用iPhone 7 Plus和8 Plus上的后置双摄像头一样:

  • 使用AVCapturePhotoOutput.打开照片的深度捕捉AVCapturePhotoOutput. isDepthDataDeliveryEnabled ,然后使用AVCapturePhotoSettings.捕捉图片AVCapturePhotoSettings. isDepthDataDeliveryEnabled 。 您可以从捕获后收到的AVCapturePhoto对象中读取depthData ,或者如果您只想激发并忘记(并稍后从捕获的图像文件中读取数据),则打开embedsDepthDataInPhoto

  • 使用AVCaptureDepthDataOutput获取深度贴图的实时馈送。 那个就像video数据输出; 而不是直接录制到电影文件,它为您的代表提供了一个定时的图像序列(或在这种情况下,深度)缓冲区。 如果您还要同时捕获video, AVCaptureDataOutputSynchronizer可能非常方便确保您将协调的深度贴图和颜色框架结合在一起。

正如Apple的设备兼容性文档所述,您需要选择builtInTrueDepthCamera设备以获取任何这些深度捕获选项。 如果您选择前置的builtInWideAngleCamera ,它就像任何其他自拍相机一样,只捕捉照片和video。


只是强调:从API的角度来看,在iPhone X上使用前置TrueDepth相机捕捉深度与使用iPhone 7 Plus和8 Plus上的后置双摄像头捕捉深度非常相似。 因此,如果您想深入了解所有这些深度捕获业务的工作原理,以及您可以使用捕获的深度信息做些什么,请查看WWDC17会话507:捕获iPhone摄影中的深度 。