2

因此,我试图获取通常在 iOS 图像深度示例中使用的灰度深度图的 jpeg/png 表示。深度数据作为辅助数据存储在每个 jpeg 中。我已经学习了一些教程,并且将这些灰度数据渲染到屏幕上没有问题,但是我找不到将其实际保存为 jpeg/png 表示的方法。我几乎使用此代码:https ://www.raywenderlich.com/168312/image-depth-maps-tutorial-ios-getting-started

深度数据被放入 acvpixelbuffer并进行相应的操作。我相信它的格式kCVPixelFormatType_DisparityFloat32

虽然我能够在屏幕上看到相应表示的这些数据,但我无法使用UIImagePNGRepresentationUIImageJPGRepresentation。当然,我可以手动捕获屏幕截图,但这并不理想。

我怀疑cvpixelbuffer数据格式与这些功能不兼容,这UIImage就是为什么我不能让它们吐出图像的原因。

有没有人有什么建议?

4

3 回答 3

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)
于 2021-04-23T09:36:15.970 回答
0

我想到了。我必须先转换为 CGImage。最终将 cvPixelBuffer 到 CIImage 到 CGImage 到 UIImage。

于 2018-03-12T05:05:57.173 回答
0

发布一个快速的代码示例,以防有人想使用它。

let ciimage = CIImage(cvPixelBuffer: depthBuffer) // depth cvPixelBuffer
let depthUIImage = UIImage(ciImage: ciimage)
于 2020-10-02T14:01:38.673 回答