我想利用ARKit跟踪手机位置的能力,使用相机自动拍照。我的初步调查发现,虽然ARKit正在使用相机,但使用标准的AVFoundation方法无法获得高质量的图像(因为相机正在使用中)。
我知道可以使用sceneView.snapshot()
,但它提供的最佳质量只有1080p,这对我的应用程序来说不够高质量。
我的问题是,在ARSession运行时是否有其他捕获后置摄像头高质量照片的方法?如果没有,是否有替代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}
分辨率可能会因您的硬件而异。
另一个要检查的是您是否覆盖了ARConfiguration
的videoFormat
属性。 您可以使用ARWorldTrackingConfiguration.supportedVideoFormats
检查设备支持哪些视频格式。