使用ARKit拍摄高质量的照片

时间:2018-11-13 18:50:20

标签: ios swift augmented-reality arkit

我对使用ARKit跟踪手机位置以使用相机自动拍照的功能感兴趣。最初的调查使我了解到,虽然ARKit使用相机,但无法使用标准AVFoundation方法获得高质量的图像(由于使用了相机)。

我了解我可以使用sceneView.snapshot(),但是它可以提供的最佳质量是1080p,这对于我的应用程序来说还不够高。

我的问题是,在ARSession运行时,是否还有其他方法可以从后置摄像头捕获高质量照片?如果没有,ARKit是否有其他替代方法可以估算手机的位置?

1 个答案:

答案 0 :(得分:0)

这可能无法为您提供所需的分辨率,但是我注意到,在currentFrame.capturedImage上使用ARSession属性会产生比sceneView.snapshot()更高的分辨率图像。

下面是在iPhone 7上使用调试器的示例:

(lldb) po sceneView.snapshot()
<UIImage: 0x282331180>, {750, 1334}

(lldb) po UIImage(pixelBuffer: session.currentFrame.capturedImage)
▿ Optional<UIImage>
  - some : <UIImage: 0x282331e30>, {1920, 1440}

分辨率可能会因您的硬件而异。

要检查的另一件事是,是否要覆盖videoFormat的{​​{1}}属性。您可以使用ARConfiguration检查设备支持的视频格式。