我进行了一些搜索,发现了各种示例、有关 iPhone X Face ID 的文档以及它如何用于身份验证、动画表情符号等各种内容。
想检查是否有 API/SDK 可以将原始深度图从 iPhone X 传感器获取到应用程序?
据我了解,深度计算是根据投影模式完成的。这可用于获取传感器前方任何物体的深度剖面。(可能取决于对象的纹理。)
您至少需要 Xcode 9.1 中的 iOS 11.1 SDK(在撰写本文时都处于测试阶段)。这样,builtInTrueDepthCamera
就成为您用于选择捕获设备的相机类型之一:
let device = AVCaptureDevice.default(.builtInTrueDepthCamera, for: .video, position: .front)
然后,您可以继续设置AVCaptureSession
TrueDepth 摄像头设备,并可以使用该捕获会话来捕获深度信息,就像您在 iPhone 7 Plus 和 8 Plus 上使用后置双摄像头一样:
使用 为照片打开深度捕捉AVCapturePhotoOutput.
isDepthDataDeliveryEnabled
,然后使用 拍摄照片AVCapturePhotoSettings.
isDepthDataDeliveryEnabled
。您可以从捕获后收到depthData
的AVCapturePhoto
对象中读取,或者embedsDepthDataInPhoto
如果您只想触发并忘记(稍后从捕获的图像文件中读取数据),则可以打开。
使用 获取深度图的实时供稿AVCaptureDepthDataOutput
。那个就像视频数据输出;它不是直接录制到电影文件,而是为您的委托提供一个定时的图像序列(或在本例中为深度)缓冲区。如果您还同时捕获视频,则AVCaptureDataOutputSynchronizer
可能有助于确保您获得协调的深度图和颜色帧。
正如 Apple 的设备兼容性文档所述,您需要选择builtInTrueDepthCamera
设备才能获得这些深度捕捉选项中的任何一个。如果您选择前置builtInWideAngleCamera
,它就像任何其他自拍相机一样,只拍摄照片和视频。
强调一下:从 API 的角度来看,使用 iPhone X 上的前置 TrueDepth 摄像头捕捉深度与使用 iPhone 7 Plus 和 8 Plus 上的后置双摄像头捕捉深度非常相似。因此,如果您想深入了解所有这些深度捕获业务的总体运作方式,以及您可以如何处理捕获的深度信息,请查看WWDC17 会议 507:iPhone 摄影中的深度捕获谈话。