0

我正在使用 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 是否有更高的精度?

4

1 回答 1

2

我没有尝试过,所以我不确定你是否可以从 TrueDepth 相机中获得“更深”的深度格式。

但是,如果可以的话,转换来自捕获的深度数据并不是解决问题的方法depthData.converting(toDepthDataType:)类似于转换标量类型。例如,如果您有一个 type 的值Float,则通过将其转换为获得的额外小数位Double全为零 - 您现有的测量没有获得任何精度。

您指定深度捕获格式的方式是捕获之前。将您的捕获设备设置为与其当前兼容的设备activeDepthDataFormat之一。您在其中找到的值将告诉您捕获设备能够记录的深度数据的类型/精度。supportedDepthDataFormatsactiveFormatsupportedDepthDataFormats

于 2018-02-23T19:30:33.223 回答