- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试生成一个点云,其中每个点都有一种颜色。我可以只获取点云,也可以让相机拍照,但我需要它们尽可能同步。如果我可以在调用 onXYZijAvailable()
时查找带有时间戳的 RGB 图像或调用函数来获取当前帧,我就完成了。我可以遍历这些点,找出它与图像平面相交的位置,并获得该像素的颜色。
因为现在我还没有找到任何方法来获取图像的像素信息或获取彩色点。我见过 AR 应用程序,其中相机连接到 CameraView
,然后在顶部呈现内容,但相机流从未被应用程序触及。
根据 this发布应该可以通过简单的转换获得我想要的数据并同步点云和图像平面。 This帖子也说了类似的话。但是,我不知道如何获取 RGB 数据。我找不到任何开源项目或教程。
我得到的最接近的结果是通过使用以下命令找出框架何时准备就绪:
public void onFrameAvailable(final int cameraId) {
if (cameraId == TangoCameraIntrinsics.TANGO_CAMERA_COLOR) {
//Get the new rgb frame somehow.
}
}
我正在使用 Java API,如果可能的话,我非常不想深入研究 JNI 和 NDK。如何获得与当前点云的时间戳最匹配的帧?
感谢您的帮助。
更新:
我实现了它的 CPU 版本,甚至在对其进行了一些优化之后,我也只能在小型点云上获得 0.5 FPS。这也是由于必须将颜色从 android 原生 NV21 颜色空间转换为 GPU 原生 RGBA 颜色空间。我本可以进一步优化它,但我不会用它来获得实时效果。 Android 设备上的 CPU 根本无法正常运行。如果您想在超过几千个点上执行此操作,请使用 GPU 或在后期进行额外的麻烦。
最佳答案
Tango 通常将彩色像素数据直接传送到 OpenGLES 纹理。在 Java 中,您创建目标纹理并将其注册到 Tango.connectTextureId()。 , 然后在 onFrameAvailable()回调你用 Tango.updateTexture() 更新纹理.在纹理中获得彩色图像后,您可以使用 OpenGLES 绘图调用和着色器访问它。
如果您的目标是为 Tango 点云着色,最有效的方法是在 GPU 中执行此操作。也就是说,不是将彩色图像从 GPU 中拉出并在 Java 中访问它,而是将点数据传递到 GPU 并使用 OpenGLES 着色器将 3D 点转换为 2D 纹理坐标并从纹理中查找颜色。如果您是第一次这样做,要做到这一点相当棘手,但可能需要获得可接受的性能。
如果您真的想在不使用 C API 的情况下直接访问像素数据,您需要将纹理渲染到缓冲区中,然后从缓冲区中读取颜色数据。如果您不习惯 OpenGL 和编写着色器,这会有点棘手,但有一个 Android Studio 应用程序可以演示 here ,并在 this answer 中进一步描述.该项目演示了如何将相机纹理绘制到屏幕上,以及如何绘制到屏幕外缓冲区和读取 RGBA 像素。
如果您真的想要直接访问像素数据,但认为 NDK 可能比 OpenGLES 更轻松,C API 有 TangoService_connectOnFrameAvailable()它直接为您提供像素数据,即无需通过 OpenGLES。但是请注意,像素数据的格式是 NV21,不是RGB 或 RGBA。
关于android - 使用 Project Tango 提取带有颜色的点云;冰。获取当前相机帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34140023/
我在没有 WiFi 的公司环境中运行,因此除非我将设备带回家,否则我无法获得 OTA 更新。在阅读了上个月有关 onFrameAvailable() 回调的问题后,我对暂时进行任何更新持怀疑态度。我目
我是一名中国开发者,正在读研究生。实验室有一个项目需要用到tango。谷歌关闭了tango官网,关闭了开发者社区和文档,因为我刚刚入门,对Tango开发不熟悉。这导致我们的项目中断。所以现在我需要 T
我正在寻求开发户外应用程序,但不确定 tango 平板电脑是否可以在户外使用。那里的其他深度设备往往在室外效果不佳,因为它们依赖于从设备转换的红外光,然后在它从场景中的物体反射回来后进行观察。我一直在
我有一个 Project Tango 开发工具包。我对处理来自传感器的深度数据很感兴趣。我的机器上安装了 ADB。但是 Eclipse android 模拟器没有检测到 Tango Developme
我正在开发一个测量工具,就像Measure It一样。我陷入了将深度框架与彩色相机框架对齐的困境。我能够获得点云的平均深度,但无法获得完整的深度帧。 Tango SDK有没有提供简单的方法来获取深度帧
我正在尝试构建探戈“java_basic_examples”并尝试运行“hello_area_description”、“hello_depth_perception”和“hello_motion_t
新设备几天前开箱。无法使用 OTA 升级,表示当前软件是最新的,即使不是最新的。没有当前内核,我无法下载 tango core 等。因此,该设备开箱即用,基本上没有功能(除了普通的平板电脑 :-))。
我最近在做一个关于室内导航的小型演示项目。我选择了 Unity 项目探戈,我刚买了 lenovo Phab 2 Pro。然而我刚刚发现探戈已经被谷歌抛弃了...... 所以我想知道如果我只是想开发一个
我对使用 Project Tango 平板电脑使用任意点特征进行 3D 重建很感兴趣。在当前的 SDK 版本中,我们似乎可以访问以下数据。 1280 x 720 RGB 图像。 具有 0-~10,00
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a softwar
Ptoject Tango提供了点云,如何获取点云中3D点的像素位置(以米为单位)? 我尝试使用投影矩阵,但得到的值非常小(0.5、1.3 等),而不是 1234,324(以像素为单位)。 我包含了我
昨晚拿到了我的 Tango 平板电脑,并试图通过安装所需的软件包来让它运行。更新“Project Tango Core”应用程序失败。这是我得到的错误: 有没有其他人看到这个并知道如何解决它? 以下是
问题:有谁知道如何使用 Tango Java ( Jacobi ) API onFrameAvailable() 获取 Tango 的彩色相机图像缓冲区打回来? 背景: 我有一个增强现实应用程序,可以
我正在使用 Project Tango 开发增强现实。加载 adf 文件后,我将 3d 对象放置到区域学习过程中标记的每个位置,并添加 3d 对象 我期望 3D 对象是静态的,因为这些对象使用坐标对象
我正在使用 Project Tango 创建增强现实应用程序。其中一个重要部分是准确的位置跟踪。当然,我知道没有任何惯性跟踪系统是完美的,但到目前为止,Tango 似乎工作得很好。 然而,在过去的几天
我刚刚将我的设备更新到最新的(莱布尼茨)版本,这里有一些观察/问题: 1)我的应用程序中现在有长时间(2-3s)的间歇期,姿势数据无效。我认为问题出在驱动程序中,因为该问题也出现在 Tango Exp
我们将时间戳作为姿势、图片和点数据的 double 值 - 它们并不总是对齐 - 如何计算两个时间戳之间的时间距离?是的,我知道如何减去两个 double ,但我完全不确定增量与时间的对应关系。 最佳
探戈项目是否每帧提取任何视觉特征(例如 ORB 或 SIFT/SURF)?或者整个点云只是从深度相机中提取的 3D 点。如果是这样,是否有可能知道他们使用的是哪种算法?它只是角落吗? 我想转储 3D
在 D 语言中,我如何读取所有标准输入并将其分配给一个字符串(使用 Tango 库)? 最佳答案 直接复制自 http://www.dsource.org/projects/tango/wiki/Ch
所以我知道 setSurface,并且将它用作叠加层或其他任何东西都没有问题 - 它在表面控件上。也就是说,我对获取像素数据感到困惑 1)我已经尝试了所有我能想到的(控件、根等)来使用绘图缓存功能来获
我是一名优秀的程序员,十分优秀!