我想在新 iPad Pro 2020 上流式传输由 LiDar 摄像头生成的深度图。
我的目标是从 TrueDepth Camera 获得类似Streaming Depth Data 的东西,其中深度图是彩色的,但我不想使用 TrueDepth 相机(正面),而是想调整 LiDar 相机的代码。但似乎没有 .supportedDepthDataFormats 用于 AVCaptureDevice 与 builtInWideAngleCamera(背面)。
如果无法流式传输来自 LiDar 的深度数据,我没有得到答案。有人有线索吗 ?
这是我的 ViewController 代码(从 Apple 示例应用程序中提取):
guard let videoDevice = AVCaptureDevice.default(.builtInWideAngleCamera, for: .video, position: .back) else { return }
// Search for highest resolution with half-point depth values
let depthFormats = videoDevice.activeFormat.supportedDepthDataFormats
let filtered = depthFormats.filter({
CMFormatDescriptionGetMediaSubType($0.formatDescription) == kCVPixelFormatType_DepthFloat16
})
let selectedFormat = filtered.max(by: {
first, second in CMVideoFormatDescriptionGetDimensions(first.formatDescription).width < CMVideoFormatDescriptionGetDimensions(second.formatDescription).width
})
do {
try videoDevice.lockForConfiguration()
videoDevice.activeDepthDataFormat = selectedFormat
videoDevice.unlockForConfiguration()
} catch {
print("Could not lock device for configuration: \(error)")
setupResult = .configurationFailed
session.commitConfiguration()
return
}
当我处理我的后置摄像头时,我没有得到与深度数据兼容的格式:
深度格式 = []
所以 :
过滤 = [] & selectedFormat = []
由于没有支持的格式,我的应用程序此时崩溃,错误提示是使用 .supportedDepthDataFormats 属性..