完成区域学习并将数据存储在ADF文件中后,我们是否可以在ADF文件中标记对象。例如,让我们说应用程序学习包含咖啡机的区域。
我可以使用一些文字"咖啡机"来标记咖啡机,以便下次识别/本地化该区域时,我可以看到标签"咖啡机"
答案 0 :(得分:0)
您可以使用SDK中的Unity示例中的区域学习功能,将标记放在已加载的ADF上。这些标记保存在XML文件中,您可以在其中检查该标记的坐标。这些坐标保存在Unity坐标系中。 (见[这里] [1] - 与Tango坐标相比,y和z反转)
因此,对于您的示例,如果您在咖啡机上放置标记,则可以获取坐标并在这些坐标处放置标签。
坐标是从ADF起点开始的三个轴上以米为单位的值。此起点(0,0,0)是按下“学习创建新ADF”时设备的位置。
除此之外,现在没有简单的方法来进行动态物体识别,这对2018年来说是一个有趣的问题。
答案 1 :(得分:0)
首先,您应该知道您使用的是Unity,C ++还是Java。在Unity下,从Tango示例中的AreaLearningInGameController开始,在文件的最后,您可以看到他们在XML文件中保存的数据结构。保存的结构只需要可序列化,字符串是可序列化的,因此在您的情况下,您可以执行以下操作:
/// <summary>
/// Data container for Objects.
///
/// Used for serializing/deserializing objects to xml.
/// </summary>
[System.Serializable]
public class ObjectData
{
[XmlElement("tag")]
public string m_tag;
[XmlElement("position")]
public Vector3 m_position;
[XmlElement("orientation")]
public Quaternion m_orientation;
}
然后您需要做的就是使用关联的标签保存和加载对象。在我链接的示例中,这样做的方式非常清楚。