在我的应用中,我试图在自定义相机视图中将ArCore用作“相机助手”。
要清楚-我想在用户的相机中显示该用户的图像,并让他捕获不包含AR模型的图像。
据我了解,为了使用ArCore捕获图像,我必须使用Camera2 API,该API是通过将会话配置为使用“共享相机”而启用的。
但是,我似乎无法将相机配置为使用任何高端分辨率(我使用的是像素3,因此我应该能够将像素提高到12MP)。
在“共享相机示例”中,它们在Camera2和ArCore之间切换(可惜没有CameraX的API),并且它有几个问题:
此要求目前是否可能?
答案 0 :(得分:0)
我还没有使用ARCore的共享摄像头,但是关于您问题的要点我可以说几句。
在ARCore中,您可以配置CPU图像大小和GPU图像大小。您可以通过选中所有available camera configurations(可通过Session.getSupportedCameraConfigs(CameraConfigFilter cameraConfigFilter)
使用),然后将其传递回ARCore会话来选择您喜欢的一个。在每个CameraConfig上,您可以检查将获得的CPU图像大小和GPU纹理大小。
可能您当前正在使用(可能是默认设置?)具有最低CPU图像的CameraConfig,如果我没有记错的话,则为640x480像素,因此,是的,渲染时肯定看起来很模糊(但与深度传感器无关)。
听起来像您可以选择一个更高的CPU映像,您就可以了...但是不幸的是,并非如此,因为该配置适用于每帧。获取更高分辨率的CPU映像将导致性能大大降低。当我对此进行测试时,我在测试设备上每秒获得大约3-4帧的帧,绝对不理想。
那现在呢?我认为您有2个选择:
关于CameraX,请注意,它包装了Camera2 API以提供一些相机用例,从而使应用程序开发人员不必担心相机的生命周期。据我了解,ARCore不适合使用CameraX,因为我认为他们需要完全控制相机。
我希望能有所帮助!