получить текущий фрейм в виде изображения из ARWorldTrackingConfiguration? - PullRequest
1 голос
/ 10 марта 2019

Мне нужно извлечь кадр, который видит физическая камера (без добавления SCNScene) во время настройки ARWorldTrackingConfiguration. Я новичок в 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

1 Ответ

1 голос
/ 10 марта 2019

Вы можете преобразовать 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

}
...