【问题标题】:ORB SLAM 2 - AR Implementation for AndroidORB SLAM 2 - Android 的 AR 实现
【发布时间】:2017-01-25 13:56:13
【问题描述】:

我使用ORB-SLAM2 实现了一个应用程序。目前我的活动中有一个 OpenCV JavaCameraView 并将相机帧转换为 Mat 并将它们发送到 SLAM 系统。 现在一切正常,但我不知道如何在相机屏幕上的正确位置渲染和显示虚拟对象。

我想实现一个简单的 AR 应用,在屏幕上显示一些简单的文本作为虚拟对象。任何帮助我实现这一目标的步骤都将受到欢迎。

【问题讨论】:

  • 如果您想要基本的文本绘制,您可以使用从相机表面视图检索到的画布,并在检测到坐标后绘制文本。你的具体困难是什么?
  • @yakobom,目前我只能运行 SLAM 系统,我不知道我应该从中收集什么,当用户想要添加新的虚拟文本但我不知道如何计算当跟踪线程运行时要在画布上绘制的文本的 x 和 y。

标签: android opencv augmented-reality orb slam


【解决方案1】:

你要做的是:

  1. 从 ORB-SLAM 你有一个 3D 点的点云。您必须根据您想要的位置将虚拟对象放置在此点云中(这意味着您将 x、y 和 z 坐标分配给虚拟对象的点)
  2. 然后您必须使用相机特定的投影矩阵将这些 3D 点投影到图像平面上,这将为您提供 3D 点在 2D 图像平面上的位置
  3. 然后您必须根据从 (2) 获得的 2D 位置在图像上绘制对象/点。

ORB-SLAM 本身也有做简单 AR 的功能,也许你也可以看看他们使用的代码。

【讨论】:

  • 是的,我看过 AR 示例。但无法将其转换为android。所有函数都用于 Linux 库。
  • 目前我能够获取所有 3D 点并将它们投影到屏幕上。现在的问题是如何将用户在 2D 屏幕上触摸的某个位置转换为 3D 点? (您知道原始 ORB_SLAM 中的示例 AR 源代码仅在相机正下方创建一个平面。)
  • 我现在也在做同样的事情。您愿意使用 Unity 吗?我已经在 iOS 上成功使用了它——在 3D 空间中放置了一个可以移动的对象。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多