在会话之间保存ARCore图像数据库

时间:2018-10-24 13:28:51

标签: android arcore

首次发布。

我正在尝试保存运行时创建的增强图像数据库,以供以后的会话中使用。我环顾四周,但未发现与此相关的任何问题。

先谢谢了。

EDIT 应该已经提到,我正在使用Unity(对不起,我是新手)。

1 个答案:

答案 0 :(得分:0)

您可以使用序列化功能来创建字节数组或输出流,具体取决于您使用的是Android还是Android NDK。

对于NDK:

void ArAugmentedImageDatabase_serialize(
      const ArSession *session,
      const ArAugmentedImageDatabase *augmented_image_database,
      uint8_t **out_image_database_raw_bytes,
      int64_t *out_image_database_raw_bytes_size
    )

对于Android:

public void serialize (OutputStream outputStream)

对于Unity:首先必须导入图像,然后在导入设置中选中“启用读/写”。 然后,您必须将图像转换为RGBA32或RGB24。因为ARCore仅支持这两种格式。

        Texture2D empty = new Texture2D(ImportedImage.width,ImportedImage.height, TextureFormat.RGBA32, false);
        empty.SetPixels(ImportedImage.GetPixels());
        empty.Apply();

然后您可以使用databaseTest.AddImage("first",empty);。但是,必须在ARCoreSessionConfig增强图像数据库字段中使用该数据库,如下所示:

enter image description here

否则应用程序挂起,我不确定为什么。祝你好运!