2015-01-12 54 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定期發射。不幸的是,當它發射時,由於連接紋理停止而發生的圖像更新。但至少我已經掌握了一些東西! –