从ArworldTrackingConfiguration中获取当前的Fram作为UIImage



我需要提取物理摄像头看到的帧(不添加scnscene),同时配置了arworldTrackingConfiguration。我是iOS的新手,所以也许我缺少一些东西,但我无法做到这一点。对如何做到这一点的任何帮助。

我尝试使用

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

在我的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()

后出现了无错误的错误

您可以使用此功能将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
}

相关内容

  • 没有找到相关文章

最新更新