我希望能够在iOS的捕获ARframe的深度数据存储在一个无损压缩的图像文件。
根据这次 WWDC演讲:
“在iOS 11中,我们支持两种深度图像。第一种是HEIF HEVC,这是一种新格式,也称为HEIC文件,并且那里对深度有一流的支持...第二种格式是JPEG。伙计,JPEG并不是要这样做,但无论如何,我们还是让它做到了,如果地图经过过滤,则为8位有损JPEG,或者如果其中没有数字,则使用16位无损JPEG编码保留所有非数字,我们将其存储为JPEG底部的第二个图像,因此,如果您熟悉它,它就像一个多图片对象。”
当我将原始深度缓冲区(16位)与从存储的图像像素明智检索的深度缓冲区进行比较时,将得到以下结果:
First Second
0.61865234 0.6196289
0.62109375 0.6196289
0.6269531 0.6274414
0.6298828 0.63134766
0.6328125 0.63134766
nan 0.003921509
nan 0.0
nan 0.0
nan 0.007843018
nan 0.003921509
即使当我在其中包含NAN的未过滤深度数据时,存储的数据也无法保存它们,并且看起来也不使用无损编码
这是我写的代码:
if let currentFrame = session.currentFrame, let depthData = currentFrame.capturedDepthData { // The session variable is an ARSession object
let outputURL: URL? = filePath(forKey: "test")
guard let cgImageDestination = CGImageDestinationCreateWithURL(outputURL! as CFURL, kUTTypeJPEG, 1, nil) else {
return
}
depthData.depthDataMap.normalize() // Normalizing depth data between 0.0 and …Run Code Online (Sandbox Code Playgroud)