我使用iPhone X上的前置摄像头捕捉深度数据(使用红外真深度摄像头)。
我能够非常轻松地从我拍摄的照片中提取 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有更高的精度吗?
答案 0 :(得分:2)
我还没试过,所以我不确定你是否可以从TrueDepth相机中获得“更深”的深度格式。
但是,如果可以转换捕获的 out 的深度数据,则不是这样做的。 depthData.converting(toDepthDataType:)
类似于转换标量类型。例如,如果您的值为Float
,则将其转换为Double
所获得的额外小数位均为零 - 您的现有测量值未获得任何精度。
指定深度捕获格式的方式是在捕获之前。将捕获设备的activeDepthDataFormat
设置为与其当前supportedDepthDataFormats
兼容的activeFormat
之一。您在supportedDepthDataFormats
中找到的值将告诉您捕获设备能够记录的深度数据的类型/精度。