ARCore 如何发布通过 acquireCameraImage 获取的图像

ARCore how to release image acquired with acquireCameraImage

我正在尝试从 ARCore 相机捕捉图像,但连续这样做会返回一个异常 (com.google.ar.core.exceptions.ResourceExhaustedException) 并且在 JNI 级别也可以使用相同的日志

E: cpu_image_manager.cc:102 Failed to acquire new image, due to too many images acquired but not released.
E: status.cc:155 ArStatusErrorSpace::AR_ERROR_RESOURCE_EXHAUSTED: 

所以我试图找出如何发布图像,正如 ARCore ref 所指出的那样,使用 C (Caller is responsible for later releasing the image with ArImage_release) 非常容易,但在 Java 中没有Frame 对象的释放方法。是因为GC是为了释放资源本身吗?

在使用

获取 Image 对象之后
final Image image = frame.acquireCameraImage()

您可以释放内存调用:

image.close();

Use the latest version ARCore SDK for Android 1.4, because prior to 1.3 image.close() had a bug with a reference received from frame.acquireCameraImage()

参考:Image.close() reference