2015-01-12 32 views
5

所以我知道setSurface,并没有任何问题将它用作覆盖或任何 - 它在surfacecontrol上。这就是说,我很难获得像素数据有没有什么办法可以访问Java中的探戈pointcloud摄像头图像像素

1)我已经尝试了所有我能想到的(控制,根等)使用绘图缓存功能获取相机表面的位。 Yah,不。缓存的位图始终为零。

2)我已经成功地将SurfaceView和GLSurfaceView用作setSurface taget。我不能使用任何其他类,如TextureView。

3)我已经研究了C API,我看到照相机曝光connectOnFrameAvailable,这将给我访问像素

我的猜测是,内部探戈逻辑只是在Java中使用的表面获得访问底层的位传输通道 - 在C API中,它需要一个纹理ID,这让我怀疑在一天结束时,相机数据很快就被发送到GPU,我敢打赌,CUDA lib在它上面运行 - 考虑到事情的状态,我看不到如何在没有设备生根的情况下获得Java端的位 - 只是因为我有一个纹理或简单的表面视图渲染屏幕上的原始位并不意味着我可以到达他们。

我不想将图像数据从GPU中剥离出来。我需要将我的繁忙动画从手表切换到日历。

在我深入研究C API之前,有没有什么办法可以在Java中获取摄像头位?我真的希望能够将他们与特定的姿势联系起来,但现在我甚至无法弄清楚如何获得他们。我真的很想知道3D点的位置和颜色。相机内在因素,点云以及生成点云的2D图像都是我需要的。但是如果我无法获得像素,我就无能为力,而且图像与(构图和点云)之间的关系越不明确,任何努力都将变得更加可疑。

如果我确实潜入C,connectOnFrameAvailable会给我我需要的吗?点云生成的同步性如何?哦,我有这个权利吗?彩色摄像机用于深度,鱼眼用于姿势?

我可以混合使用Java和C,即在Java中创建一个Tango实例,然后将C用于图像问题?或者我将不得不重新实现C中的所有内容,并停止使用探戈java jar?

回答

0
  • 将connectOnFrameAvailable给我什么我需要?

是的,它确实返回YUV字节缓冲区。

  • 与点云生成的同步程度如何?

Tango API本身并不提供彩色图像和深度点云之间的同步,但它确实提供了允许您在应用程序级别同步的时间戳。

  • 彩色摄像头用于深度,鱼眼用于姿势?

是的,你是对的。

  • 我可以混用Java和C(即在Java中创建一个探戈实例,那么就使用下的图像问题) 开始的两个探戈实例是真的不探戈支持的方式,尽管它的工作原理,它会是非常hacky ..

作为临时走动,你可以尝试使用视图的图形缓存?

+0

nope - 我将那只小狗直接跑到地上 - 美人蕉得到了那条路上的小碎片,除非我想要设备根部。但是,我现在正在运行C++的东西。 TangoService_connectOnFrameAvailable定期发射。不幸的是,当它发射时,由于连接纹理停止而发生的图像更新。但至少我已经掌握了一些东西! –