所以我试图获得通常在iOS图像深度示例中使用的灰度深度图的jpeg / png表示。深度数据作为辅助数据存储在每个jpeg中。我已经遵循了一些教程,我没有问题将这个灰度数据渲染到屏幕上,但我找不到实际将其保存为jpeg / png表示的方法。我几乎都在使用这段代码:https://www.raywenderlich.com/168312/image-depth-maps-tutorial-ios-getting-started
将深度数据放入cvpixelbuffer
并相应地进行操作。我相信它的格式为kCVPixelFormatType_DisparityFloat32
。
虽然我能够在屏幕上看到相应的数据,但我无法使用UIImagePNGRepresentation
或UIImageJPGRepresentation
。当然,我可以手动捕获屏幕截图,但这并不是很理想。
我怀疑cvpixelbuffer
数据格式与这些UIImage
函数不兼容,这就是我无法让它们吐出图像的原因。
有没有人有任何建议?
答案 0 :(得分:1)
// CVPixelBuffer to UIImage
let ciImageDepth = CIImage(cvPixelBuffer: cvPixelBufferDepth)
let contextDepth:CIContext = CIContext.init(options: nil)
let cgImageDepth:CGImage = contextDepth.createCGImage(ciImageDepth, from: ciImageDepth.extent)!
let uiImageDepth:UIImage = UIImage(cgImage: cgImageDepth, scale: 1, orientation: UIImage.Orientation.up)
// Save UIImage to Photos Album
UIImageWriteToSavedPhotosAlbum(uiImageDepth, nil, nil, nil)
答案 1 :(得分:0)
我明白了。我必须先转换为CGImage。结束cvPixelBuffer到CIImage到CGImage到UIImage。
答案 2 :(得分:0)
发布快速代码示例,以防有人使用。
let ciimage = CIImage(cvPixelBuffer: depthBuffer) // depth cvPixelBuffer
let depthUIImage = UIImage(ciImage: ciimage)