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

时间:2017-09-25 20:08:19

标签: ios iphone iphone-x

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

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

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

1 个答案:

答案 0 :(得分:7)

您至少需要Xcode 9.1中的iOS 11.1 SDK(截至本文撰写时均为测试版)。有了它,builtInTrueDepthCamera成为您用来选择捕获设备的camera types之一:

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

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

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

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

正如Apple的Device Compatibility文档说明,您需要选择builtInTrueDepthCamera设备才能获得任何这些深度捕获选项。如果您选择前置builtInWideAngleCamera,它就像任何其他自拍相机一样,只捕捉照片和视频。

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