【问题标题】:Adding ARToolkit Marker tracking into Tango在 Tango 中添加 ARToolkit Marker 跟踪
【发布时间】:2017-01-30 11:06:11
【问题描述】:

我一直在尝试将 ARToolkit 标记对象跟踪集成到 Tango 应用程序中。

到目前为止,我已经创建了一个构建,以便 tango 应用可以访问和使用 ARToolkit Native Library 或 ARToolkit Unity 包装器。 但是,它们似乎都需要在默认配置中独占访问相机。

您如何将相同的 Android 视频供稿提供给两个库?

  • 您能否创建一个虚拟摄像头设备,将提要翻倍?
  • 您能否照常接收探戈提要,然后使用特殊的VideoConf 将其重新发送到 ARToolkit

[编辑]
ARToolkit 使用较旧的 Camera1 API,接受 onPreviewFrame() 回调并将该 byte[] 数据传递给它自己的 Native Library 调用,由它完成实际工作。

根据第二个要点,Tango 是否可以使用 iTangoVideoOverlay 之类的方式提供每帧原始相机数据的副本。
(ARToolkits NDK功能好像期待NV21,不过也可以接受other formats

如果该数据可以从 tango 中提取,我相信 ARToolkit NDK 功能可以在没有实际拥有相机的情况下使用。

【问题讨论】:

  • 已设法使用 ITangoVideoOverlay 从 Tango 获取图像数据,并将其发送到 ARToolkit,方法是将其向上传递给 Activity,然后通过 JNI 调用向下传递(C# 没有直接的库调用可用) .我需要弄清楚如何在 tango 提供的格式和 ARToolkit 接受的格式之间进行转换。

标签: android android-camera google-project-tango android-camera2 artoolkit


【解决方案1】:

恐怕你提到的这两种方法都行不通。 Tango拥有camera独占权限,相信ARToolkit也通过camera2 API独占camera。使用当前的 TangoSDK,我认为可以使用 ARToolkit 进行相机渲染,使用 Tango 进行姿势跟踪。

但是,这可能会暴露时间戳的问题,即 Tango 和 ARToolkit 具有不同的时间戳。解决方案是在应用程序启动的一开始就采用时间戳偏移量,并在根据时间戳从 Tango 查询姿势时不断应用该偏移量。

【讨论】:

  • 谢谢!我会进行更多研究,看看拆分姿势/跟踪和渲染的建议。我已经更新了这个问题,将图像数据导入 ARToolkit 的 NDK 库,如果您能告诉我这听起来是否可行,或者我是否在浪费时间,我将不胜感激!
【解决方案2】:

这个blog 展示了一个整合两者的例子。

它还链接到示例源代码,但我在测试后根本没有整理它 - 请谨慎操作!

您不能将相同的摄像头源提供给两个库(第一个要点),但您可以将摄像头源从 Tango (ITangoVideoOverlay) 转发到 ARToolkit ([AcceptVideoImage][2])(第二个要点)。 这并不理想,因为从 C# 向 Java 发送数据的效率相当低。 Phab 2 Pro 必须对视频 X4 进行下采样才能达到不错的帧率。
更好的答案是用管道/套接字替换 AndroidJavaClass 调用。 还有很多小问题 - 这是一个非常老套的解决方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-09
    • 2022-07-01
    • 2018-11-25
    • 2019-02-09
    • 1970-01-01
    • 2021-11-04
    相关资源
    最近更新 更多