特定于平台的指南
Android(Kotlin/Java)
Android NDK (C)
Unity (AR Foundation)
Unreal Engine
借助 ARCore 中的 Augmented Images API,您可以构建能够检测和增强用户环境中的 2D 图像(例如海报或产品包装)的 AR 应用。
您提供一组参考图片。ARCore 使用计算机视觉算法从每张图片的灰度信息中提取特征,并将这些特征的表示形式存储在一个或多个增强现实图像数据库中。
在运行时,ARCore 会在用户环境中的平面上搜索这些特征。这样一来,ARCore 就能检测到现实世界中的这些图片,并估计它们的位置、方向和大小(如果未提供)。
功能
ARCore 最多可以同时跟踪 20 张图片。ARCore 不会同时检测或跟踪同一图片的多张实例。
每个增强图像数据库最多可存储 1,000 张参考图像的信息。数据库数量不受限制,但任何给定时间只能有一个数据库处于活动状态。
在运行时,最多可向增强现实图片数据库添加 1,000 张图片。您可以使用网络连接下载之前创建的数据库。
添加图片时,可以提供要检测的图片的实际尺寸。这样做有助于提高图片检测性能。
如果未提供实际大小,ARCore 会估计大小,并随着时间的推移不断优化此估计值。
如果提供了实际尺寸,ARCore 会使用所提供的尺寸并估计图像的位置和方向,而忽略表观尺寸或实际尺寸与所提供的实际尺寸之间的任何差异。
ARCore 可以响应并跟踪以下图像:
固定在某个位置的图片,例如挂在墙上的印刷照片或放在桌子上的杂志
移动的图像,例如行驶中的公交车上的广告,或用户在移动双手时手中平板物体上的图像。
ARCore 开始跟踪图像后,会在每一帧中提供图像位置和方向的估计值。随着 ARCore 收集更多数据,它会不断优化这些估计值。
检测到图片后,即使图片因用户移动设备而暂时移出摄像头画面,ARCore 也会继续“跟踪”图片的位置和方向。发生这种情况时,ARCore 会假定图片的位置和方向是静态的,并且图片本身不会在环境中移动。
所有跟踪操作都在设备上进行。无需连接到互联网即可检测和跟踪图片。
要求
图片必须:
至少占据相机取景框的 25%,以便系统最初检测到您。
平整(例如,没有褶皱,也没有贴在瓶子上)。
确保摄像头可以清楚地拍摄到您。它们不应被部分遮挡、以高度倾斜的角度查看,也不应在因运动模糊而导致相机移动过快时查看。
CPU 利用率和性能注意事项
根据已启用的 ARCore 功能,启用增强图像可能会增加 ARCore 的 CPU 利用率。在 AR 体验不需要某些功能时,请考虑停用这些未使用的功能。这样一来,您的应用就可以使用更多 CPU 周期,从而提升散热性能和电池续航时间。
如需了解详情,请参阅性能考虑因素。
最佳做法
选择参考图片的提示
- 图片的分辨率应至少为 300x300 像素。使用高分辨率图片并不会提高性能。
- 参考图片可以采用 PNG 或 JPEG 文件格式。
- 不会使用颜色信息。彩色图片和等效的灰度图片均可用作参考图片或由用户在运行时使用。
- 避免使用压缩程度过高的图片,因为这会干扰特征提取。
- 避免使用包含大量几何特征或极少特征的图片(例如条形码、二维码、徽标和其他线稿),因为这会导致检测和跟踪效果不佳。
- 避免使用具有重复图案的图片,因为这也会导致检测和跟踪出现问题。
使用 ARCore SDK 中包含的
arcoreimg工具,获取每张图片的质量得分(介于0和100之间)。我们建议将质量得分设置为至少 75。以下是两个示例:示例图片 1 示例图片 2 

得分: 0得分: 100包含重复的几何特征 分辨率足够高;包含许多独特的功能
创建图片数据库的提示
- 使用 Android 版 arcoreimg 工具生成图片数据库文件。此工具仅适用于 Android 和 Android NDK 开发。它内置于 Unity SDK 和 ARCore Unreal 插件中。
- 数据库会存储从参考图片中的灰度数据提取的特征的压缩表示形式。每个图片条目占用约 6 KB。
- 在运行时向数据库添加图片大约需要 30 毫秒。
- 在工作器线程上添加图片,以避免阻塞界面线程。
- 或者,如果可能,请使用 ARCore SDK 中包含的
arcoreimg工具在编译时添加图片。
- 如果您知道图片的预期实际大小,请指定该大小。此信息可提高检测和跟踪性能,尤其是在处理大型实体图片(超过 75 厘米)时。
- 避免在数据库中保留许多未使用的图片,因为 CPU 利用率的增加会对系统性能产生轻微影响。
优化跟踪的提示
- 如果图片永远不会偏离其初始位置(例如贴在墙上的海报),您可以为图片附加一个锚点,以提高跟踪稳定性。
- 实物图像必须至少占据摄像头图像的 25%,才能进行初始检测。您可以提示用户将实体图片放入相机取景框中。
- 在图像的跟踪状态为完全跟踪之前,请勿使用图像的姿态和大小估计值。当 ARCore 最初检测到某个图片,但未指定预期实际尺寸时,其跟踪状态将暂停。这意味着 ARCore 已识别出该图像,但尚未收集足够的数据来估计其在 3D 空间中的位置。