我有兴趣使用 ARKit 跟踪手机位置的功能来使用相机自动拍照。我的初步调查让我了解到,虽然 ARKit 使用相机,但无法使用标准 AVFoundation 方法获得高质量图像(由于正在使用相机)。
我知道我可以使用 sceneView.snapshot()
,但是它可以提供的最佳质量是 1080p,这对于我的应用程序来说质量不够高。
我的问题是,在 ARSession 运行时,还有其他方法可以从后置摄像头拍摄高质量照片吗?如果没有,是否有任何替代 ARKit 的方法来估计手机的位置?
最佳答案
这可能无法为您提供所需的分辨率,但我注意到使用 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}
分辨率可能会因您的硬件而异。
要检查的另一件事是您是否覆盖了 ARConfiguration
的 videoFormat
属性。您可以使用 ARWorldTrackingConfiguration.supportedVideoFormats
检查您的设备支持哪些视频格式。
关于ios - 使用 ARKit 拍摄高质量照片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53287693/