使用ARKit拍摄高质量照片

5

我想利用ARKit跟踪手机位置的能力,使用相机自动拍照。我的初步调查发现,虽然ARKit正在使用相机,但使用标准的AVFoundation方法无法获得高质量的图像(因为相机正在使用中)。

我知道可以使用sceneView.snapshot(),但它提供的最佳质量只有1080p,这对我的应用程序来说不够高质量。

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


你尝试过暂停AR会话、拍照,然后恢复会话吗?这可能不是即时的,但你会得到一张高分辨率的照片。 - EmilioPelaez
1个回答

4

这可能不会给你想要的分辨率,但我注意到在ARSession上使用currentFrame.capturedImage属性可以得到比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}

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

另一个要检查的是您是否覆盖了ARConfigurationvideoFormat属性。 您可以使用ARWorldTrackingConfiguration.supportedVideoFormats检查设备支持哪些视频格式。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接