ios - 使用 ARKit 拍摄高质量照片

标签 ios swift augmented-reality arkit

我有兴趣使用 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}

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

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

关于ios - 使用 ARKit 拍摄高质量照片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53287693/

相关文章:

ios - Objective-C - 应用程序间通信

ios - 导航栏上的 UIView 动画有时会出错

ios - Xcode Main.storyboard 不显示 iOS 模拟器中出现的内容

ios - Mixare iOS 集成

ios - 从 ScrollView 中的 UIimageView 获取可见部分图像

ios - body 上设置的背景图像被切断的问题 - iOS/Safari

swift - 如何停止动画出现在 SwiftUI 中的 View ?

swift - ARKit – 如何检测 sceneView 中特定特征点的颜色?

swift - RealityKit – 从 USDZ 文件中获取模型实体

ios - 多选问题并在 UITableview 中快速选择全部