2017-10-10 26 views
6

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

标准摄像机图像: Standard camera image

ARCamera图像: ARCamera image

我见过的苹果论坛的贴子,提到这可能是iPad的临10.5特定的并且与固定镜头位置(https://forums.developer.apple.com/message/262950#262950)。

是否有公开的方式来改变设置?

另外,我曾尝试使用AVCaptureSession采取正常的照片,并把它应用到sceneView.scene.background.contents在照片拍摄完成转辙出更高清晰度的图像模糊的图像,但不能得到AVCapturePhotoOutput与ARKit

工作
+0

您是否找到解决方案?我和ARFaceTracking会议上的iPhone X上的True-Depth前置摄像头有同样的问题,我想从会话中获取高分辨率静止图像。你能切换到正常的AVCaptureSession吗?交换机之间的暂停是什么?真的想知道这里的选择... –

回答

7

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

检查ARWorldTrackingConfiguration.supportedVideoFormats获取ARConfiguration.VideoFormat对象的列表,其中每个对象都定义了分辨率和帧速率。列表中的第一个是当前设备支持的默认(和最佳)选项,所以如果您只想获得最佳分辨率/帧率,则无需执行任何操作。 (如果您想通过设置videoFormat来降低性能,可能会更好地基于阵列顺序而不是硬编码尺寸。)

自动对焦在iOS 11.3中默认开启,因此您的示例图片(与一个比较接近相机的主题)应该会更好。如果由于某种原因,您需要关闭它,there's a switch for that


仍然没有用于更改ARKit使用的底层捕获会话的相机设置的API。根据WWDC工程师的回复,ARKit使用相机捕捉功能的有限子集来确保高帧率,同时对CPU和GPU使用率的影响最小。制作更高质量的实况视频需要一定的处理开销,但计算机视觉和运动传感器集成系统也会产生一些处理开销,使ARKit工作 - 增加开销太多,并且开始增加延迟。对于一种旨在向用户显示他们的世界的“实时”增强视图的技术,您不希望“增强”部分滞后多帧的相机运动。 (另外,最重要的是,您可能需要一些CPU/GPU时间,以便您的应用在相机视图顶部呈现漂亮的3D内容。)

iPhone和iPad设备之间的情况相同,但你在iPad上注意到它更多的是因为屏幕更大 - 在4-5英寸的屏幕上,720p视频看起来并不那么糟糕,但它看起来非常难以满足10-13英寸的屏幕。 (幸运的是,在iOS 11.3中默认为1080p,看起来应该更好。)

AVCapture系统确实可以在视频捕获期间拍摄更高分辨率/更高质量的静态照片,但ARKit不会将其内部捕获会话任何方式,所以你不能使用它AVCapturePhotoOutput。(在会话期间捕获高分辨率静止图像可能仍然是一种很好的feature request。)

+0

谢谢rickster。我会提出一个功能请求,但仍然继续关注如何使用相机捕捉图像并切换场景背景 –

+0

@EdwardFord您是否设法找到解决此问题的任何解决方案? –

+0

我还没有,但苹果刚刚宣布了一个新版本的图像分辨率的改进https://developer.apple.com/news/?id=01242018b –