6

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

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

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

4

1 回答 1

8

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

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

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

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

  • 使用 获取深度图的实时供稿AVCaptureDepthDataOutput。那个就像视频数据输出;它不是直接录制到电影文件,而是为您的委托提供一个定时的图像序列(或在本例中为深度)缓冲区。如果您还同时捕获视频,则AVCaptureDataOutputSynchronizer可能有助于确保您获得协调的深度图和颜色帧。

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


强调一下:从 API 的角度来看,使用 iPhone X 上的前置 TrueDepth 摄像头捕捉深度与使用 iPhone 7 Plus 和 8 Plus 上的后置双摄像头捕捉深度非常相似。因此,如果您想深入了解所有这些深度捕获业务的总体运作方式,以及您可以如何处理捕获的深度信息,请查看WWDC17 会议 507:iPhone 摄影中的深度捕获谈话。

于 2017-09-27T18:42:20.597 回答