我做了一些搜索,发现了各种各样的例子,关于iPhone X Face ID的文档,以及它如何用于身份验证,动画表情符号等各种内容。
想要检查是否有API / SDK来获取从iPhone X传感器到应用程序的原始深度图?
根据我的理解,深度计算是基于投影模式完成的。这可用于获取传感器前方任何物体的深度剖面。 (可能取决于对象的纹理。)
答案 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演讲。