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
中找到的值将告诉您捕获设备能够记录的深度数据的类型/精度。
我在 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
中找到的值将告诉您捕获设备能够记录的深度数据的类型/精度。