ARCore –来自arFragment的图像与片段的显示不同

时间:2018-10-18 11:45:18

标签: java kotlin augmented-reality arcore sceneform

我正在我的一个项目中与ARCore合作。我在视图中使用arFragment。因此,我使用

arFragment.getArSceneView().getArFrame().acquireCameraImage()

,它返回一个image。该图像和片段显示中的预览不同。我以为通过AR片段看到的是通过acquireCameraImage捕获的图像,但是看起来所获取的图像比片段显示的部分更多,而且方向是横向的(片段显示中的人像视图)。

我需要一个与片段显示中的预览相同的图像对象。
有什么办法吗?

1 个答案:

答案 0 :(得分:2)

正如您正确编写的那样–公共方法.acquireCameraImage()从相机获取与当前帧相对应的图像:

public Image acquireCameraImage()

要获得与片段显示中的预览相同的图像对象,只需使用:

public Frame update()
  

Google ARCore开发人员文档

     

update() method更新ARCore系统的状态。其中包括:接收新的相机框架,更新设备的位置,更新跟踪锚的位置,更新检测到的平面等。此调用可能导致屏幕外OpenGL活动。因此,为避免不必要的帧缓冲区刷新和重新加载,不应在渲染帧或屏幕外缓冲区的中间进行此调用。该调用可以更新所有创建的锚点和检测到的平面的姿态。可通过getUpdatedTrackables(Class)访问更新对象集。处于阻塞模式(请参阅Config.UpdateMode)的此调用将等待,直到有新的摄像机图像可用,或直到达到内置超时(当前为66ms)为止。如果摄像机图像没有在内置超时之前到达,则update()将返回最新的Frame对象。对于某些应用程序,重要的是要知道是否实际获得了新的帧(例如,如果相机未产生新的帧,则要避免重画)。为此,请将通过getTimestamp()获得的当前帧的时间戳与先前记录的帧时间戳进行比较。如果它们不同,那么这是新框架。