问题描述
我使用新的iPadPro和LIDAR应用程序,对SWIFT5有点陌生(通常在CordovaApps上工作,所需的本机编码最少)
我想将获得的CVPixelBuffer转储到.bin
文件中。
我得到这样的缓冲区:let depthMap = frame.sceneDepth!.depthMap
它返回一个DepthFloat32
缓冲区。
之后,我锁定地址并获取它:
CVPixelBufferLockBaseAddress(depthMap,CVPixelBufferLockFlags(rawValue: 0))
var addr = CVPixelBufferGetBaseAddress(depthMap)
如何将这些值保存到iPad上的文件中?感谢您的帮助。
解决方法
我自己解决了。如果有人需要,这是我的解决方案。
收集所有必要的值:
let addr = CVPixelBufferGetBaseAddress(depthMap)
let height = CVPixelBufferGetHeight(depthMap)
let bpr = CVPixelBufferGetBytesPerRow(depthMap)
然后我将bufferaddress交给Data obj,以在内存中创建一个字节缓冲区-> Data
let data = Data(bytes: addr!,count: (bpr*height))
do {
let filename = getDirectory().appendingPathComponent(timestamp +"_depthbuffer.bin")
try data.write(to: filename)
} catch {
// do smth with errors
}
getDirectory()
是用于查找“文档目录”的自定义功能。我可以从应用容器中获取创建的文件。
别忘了锁定和解锁BufferAdress。