AVDepthData 可以返回超过 8 位的数据吗?

Can AVDepthData be returned with more than 8-bit data?

我在 iPhone X 上使用前置摄像头来捕捉深度数据(使用 IR 真实深度摄像头)。

我能够很容易地从我拍摄的照片中提取 depthData,但该数据似乎仅限于每个数据点的 8 位值,即使我相信我要求的是 32 位精度。见下文:

func photoOutput(_ output: AVCapturePhotoOutput, didFinishProcessingPhoto photo: AVCapturePhoto, error: Error?) {    
    let depthData = photo.depthData

    if (depthData != nil) {
        print("got some depth data")

        let depthData = (depthData?.converting(toDepthDataType: kCVPixelFormatType_DepthFloat32))
    }
}

上面代码段中的 depthData 对象仅包含 8 位值。 AVDepthData 是否提供更高的精度?

我没有尝试过,所以我不确定您是否可以从 TrueDepth 相机中获得 "deeper" 深度格式。

但是,如果可以的话,将捕获的 输出 的深度数据转换为不可行的方法。 depthData.converting(toDepthDataType:) 类似于转换标量类型。例如,如果您有一个 Float 类型的值,将其转换为 Double 后获得的额外小数位全为零 — 您现有的测量值没有获得任何精度。

指定深度捕捉格式的方式是捕捉之前。设置您的捕获设备的 activeDepthDataFormat to one of the supportedDepthDataFormats compatible with its current activeFormat。您在 supportedDepthDataFormats 中找到的值将告诉您捕获设备能够记录的深度数据的类型/精度。