1

我需要在配置 ARWorldTrackingConfiguration 时提取物理相机看到的帧(未添加 SCNScene)。我是 ios 新手,所以也许我遗漏了一些东西,但我无法做到这一点。任何有关如何执行此操作的帮助表示赞赏。

我尝试使用提取

var buffer = self.sceneView.session.currentFrame?.capturedImage

其中 sceneView 是我的 ARSCNView,我认为它会给我 YCbCr 中的图像

然后我尝试使用转换为 RGB

let ciImage = CIImage(cvPixelBuffer: buffer)
let context = CIContext(options: nil)
let cgImage = context.createCGImage(ciImage, from: ciImage.extent)
let uiImage = UIImage(cgImage: cgImage!)

但是在调用 pixelBufferToUIImage() 后得到 nil 错误

4

1 回答 1

1

您可以使用此函数将ARSCNView转换为:UIImage

func imageFrom(scene:ARSCNView) -> UIImage {

    UIGraphicsBeginImageContextWithOptions(scene.bounds.size, scene.isOpaque, 0.0)
    scene.drawHierarchy(in: scene.bounds, afterScreenUpdates: false)
    let image = UIGraphicsGetImageFromCurrentImageContext()
    UIGraphicsEndImageContext()
    return UIImage(cgImage: (image?.cgImage)!)

}

用法:

@IBOutlet var sceneView: ARSCNView!

override func viewDidLoad() {
        super.viewDidLoad()
    let convertedToImage = imageFrom(scene: sceneView)

    // Do something with convertedToImage

}
于 2019-03-10T18:05:08.500 回答