【发布时间】:2018-03-06 21:44:52
【问题描述】:
我进行了一些搜索,发现了各种示例、有关 iPhone X 面容 ID 的文档以及如何将其用于身份验证、动画表情符号等各种内容。
想要检查是否有 API/SDK 可以将原始深度图从 iPhone X 传感器获取到应用程序?
据我了解,深度计算是根据投影模式完成的。这可用于获取传感器前方任何物体的深度剖面。 (可能取决于对象的纹理。)
【问题讨论】:
我进行了一些搜索,发现了各种示例、有关 iPhone X 面容 ID 的文档以及如何将其用于身份验证、动画表情符号等各种内容。
想要检查是否有 API/SDK 可以将原始深度图从 iPhone X 传感器获取到应用程序?
据我了解,深度计算是根据投影模式完成的。这可用于获取传感器前方任何物体的深度剖面。 (可能取决于对象的纹理。)
【问题讨论】:
您至少需要 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 拍摄照片。您可以从捕获后收到的AVCapturePhoto 对象中读取depthData,或者如果您只想触发并忘记(稍后从捕获的图像文件中读取数据),请打开embedsDepthDataInPhoto。
使用AVCaptureDepthDataOutput 获取深度图的实时供稿。那个就像视频数据输出;它不是直接录制到电影文件,而是为您的委托提供一个定时的图像序列(或在本例中为深度)缓冲区。如果您还同时捕捉视频,AVCaptureDataOutputSynchronizer 可能会很方便,以确保您获得协调的深度图和颜色帧。
正如 Apple 的 Device Compatibility 文档所述,您需要选择 builtInTrueDepthCamera 设备才能获得这些深度捕捉选项中的任何一个。如果您选择前置builtInWideAngleCamera,它会变得像任何其他自拍相机一样,只拍摄照片和视频。
强调一下:从 API 的角度来看,使用 iPhone X 上的前置 TrueDepth 摄像头捕捉深度与使用 iPhone 7 Plus 和 8 Plus 上的后置双摄像头捕捉深度非常相似。因此,如果您想深入了解所有这些深度捕获业务的总体运作方式,以及您可以如何处理捕获的深度信息,请查看WWDC17 Session 507: Capturing Depth in iPhone Photography 谈话。
【讨论】: