从 ARWorldTrackingConfiguration 获取当前帧作为 uiimage?
get current fram as uiimage from ARWorldTrackingConfiguration?
我需要在配置 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 错误
您可以使用此函数将 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
}
我需要在配置 ARWorldTrackingConfiguration 时提取物理相机看到的帧(未添加 SCNScene)。 我是 ios 的新手,所以也许我遗漏了一些东西,但我无法做到这一点。 对如何执行此操作的任何帮助表示赞赏。
我试过使用
提取var buffer = self.sceneView.session.currentFrame?.capturedImage
其中 sceneView 是我的 ARSCNView,我认为它会给我 YCbCr 中的图像
然后我尝试使用
转换为 RGBlet ciImage = CIImage(cvPixelBuffer: buffer)
let context = CIContext(options: nil)
let cgImage = context.createCGImage(ciImage, from: ciImage.extent)
let uiImage = UIImage(cgImage: cgImage!)
但是在调用 pixelBufferToUIImage() 后得到了 nil 错误
您可以使用此函数将 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
}