我正在构建一个 ARKit 应用程序,我们希望能够在其中拍摄场景照片。我发现 ARCamera View 的图像质量不足以在 iPad Pro 上拍照。

标准相机图像:
swift - 如何在 ARKit 中提高相机质量-LMLPHP

ARCamera 图像:
swift - 如何在 ARKit 中提高相机质量-LMLPHP

我看过一个 Apple 论坛帖子,提到这可能是 iPad Pro 10.5 特有的,并且与固定镜头位置有关 (https://forums.developer.apple.com/message/262950#262950)。

是否有公共(public)方式来更改设置?

或者,我尝试使用 AVCaptureSession 拍摄普通照片并将其应用于 sceneView.scene.background.contents 以在拍摄照片时将模糊图像切换为高分辨率图像,但无法让 AVCapturePhotoOutput 与 ARKit 一起使用

最佳答案

更新: 恭喜提交 feature requests 的人!在 iOS 11.3(又名“ARKit 1.5”)中,您至少可以控制一些捕获设置。您现在可以在默认情况下启用自动对焦的情况下获得 1080p。

检查 ARWorldTrackingConfiguration.supportedVideoFormats 以获取 ARConfiguration.VideoFormat 对象的列表,每个对象定义了分辨率和帧速率。列表中的第一个是当前设备支持的默认(也是最佳)选项,因此如果您只想获得最佳分辨率/帧率,则无需执行任何操作。 (如果您想通过设置 videoFormat 来降低性能原因,最好根据数组顺序而不是硬编码大小来执行此操作。)

自动对焦在 iOS 11.3 中默认处于开启状态,因此您的示例图片(主体相对靠近相机)应该会表现得更好。如果由于某种原因您需要将其关闭,请 there's a switch for that

仍然没有用于更改 ARKit 使用的底层捕获 session 的相机设置的 API。

据 WWDC 的工程师介绍,ARKit 使用有限的相机捕捉功能子集来确保高帧率,同时将对 CPU 和 GPU 使用率的影响降至最低。产生更高质量的实时视频会产生一些处理开销,但也有一些处理开销用于使 ARKit 工作的计算机视觉和运动传感器集成系统——增加过多的开销,你就会开始增加延迟。对于应该向用户展示他们世界的“实时”增强 View 的技术,您不希望“增强”部分使相机运动滞后多帧。 (此外,最重要的是,您可能需要一些 CPU/GPU 时间让您的应用程序在相机 View 顶部渲染漂亮的 3D 内容。)

iPhone 和 iPad 设备之间的情况是一样的,但你会在 iPad 上更多地注意到它,只是因为屏幕更大——720p 视频在 4-5"屏幕上看起来并不那么糟糕,但它看起来很糟糕填满 10-13"的屏幕。 (幸运的是,您在 iOS 11.3 中默认获得 1080p,看起来应该会更好。)

AVCapture 系统确实提供了在视频捕获期间拍摄更高分辨率/更高质量的静态照片,但 ARKit 不会以任何方式公开其内部捕获 session ,因此您不能将 AVCapturePhotoOutput 与它一起使用。 (在 session 期间捕获高分辨率剧照可能仍然是一个很好的 feature request 。)

关于swift - 如何在 ARKit 中提高相机质量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46676012/

10-14 01:36