【问题标题】:Raw Depth map SDK for IPhone X适用于 iPhone X 的原始深度图 SDK
【发布时间】:2018-03-06 21:44:52
【问题描述】:

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

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

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

【问题讨论】:

    标签: ios iphone iphone-x


    【解决方案1】:

    您至少需要 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 谈话。

    【讨论】:

    • 我已经按照您的指示设置了我的 AVCaptureDevice,当我尝试在我的 AVCapturePhotoOutput 对象上启用深度数据传输时,我收到一条错误消息,指出“***由于未捕获的异常而终止应用程序‘NSInvalidArgumentException’ ,原因:'*** -[AVCapturePhotoOutput setDepthDataDeliveryEnabled:] 当前配置不支持深度数据传递'”。你知道这可能是什么原因吗?自从我为 iOS 开发以来已经有很长时间了,所以我有可能/很可能正在做一些显而易见的事情。
    • @rickster前置摄像头返回的深度数据,是否有可能返回超过8位数据/每像素?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-04
    • 2017-01-06
    • 2018-04-15
    • 1970-01-01
    • 2018-08-17
    • 1970-01-01
    相关资源
    最近更新 更多