2015-01-12 6 views
5

私はsetSurfaceについて知っていますので、オーバーレイなどとして使用することは問題ありません。つまり、私はピクセルデータを取得するのに困惑しています。Javaのタンゴポイントクラウドカメラの画像ピクセルにアクセスする方法はありますか

1)私は、カメラの表面のビットを取得するために描画キャッシュ関数を使用するために私が考えることができる(コントロール、ルートなど)を試しました。 Yah、いいえ。キャッシュされたビットマップは常にゼロになります。

2)SurfaceViewとGLSurfaceViewの両方をsetSurfaceタグセットとして正常に使用しました。 TextureViewのような他のクラスは使用できません。

3)私はCのAPIを検討していると私はカメラがピクセルに私にアクセスできるようになりますconnectOnFrameAvailableを公開参照

私の推測では、内部タンゴ・ロジックがちょうど得るためにJavaで表面を使用していることです基礎となるビット転送チャネルへのアクセス - C APIではテクスチャIDが必要です。その日の終わりには疑わしいものになります。カメラデータはかなり早くGPUに送られ、CUDA libがその上で動作すると確信しています - 物事の状態を考えれば、デバイスを根絶することなく、Java側でビットを取得する方法を見ることができません - 画面上の生のビットをレンダリングするテクスチャや単純な表面ビューを持っているだけで、それら。

イメージデータをGPUから剥がしたくないです。私は忙しいアニメーションを時計からカレンダーに切り替える必要があります。

私がC APIを掘り下げる前に、Javaでカメラのビットを取得する方法はありますか?私は本当にそれらを特定のポーズに関連付けることができたいと思っていますが、今は私はそれらをすべて入手する方法を見つけることさえできません。私は本当に3Dポイントの位置と色を知りたいです。カメラ組み込み関数、ポイントクラウド、ポイントクラウドを生成した2次元画像はすべて必要なものです。しかし、私はピクセルを得ることができない場合、私は何もできないし、画像と(ポーズとポイントクラウド)の間の関係はよりスケッチャの努力になります疑わしい。

私がCに潜入した場合、connectOnFrameAvailableは私に必要なものを与えますか?ポイントクラウド世代との同期性はどうですか?ああ、私はこの権利を持っていますか?カラーカメラは深度に使用され、魚眼レンズはポーズに使用されますか?

JavaとCを混在させることができます。つまり、JavaでTangoインスタンスを作成し、画像の問題にCを使用するだけですか?あるいは、私はC言語のすべてを再現し、タンゴのJava jarの使用をやめなければなりませんか?

答えて

0
  • connectOnFrameAvailableは私に必要なものを与えますか?

はい、実際にはYUVバイトバッファを返します。

  • ポイントクラウド世代との同期性はどうですか?

タンゴAPI自体は、カラー画像と深度点クラウドの同期を提供しませんが、アプリケーションレベルで同期できるタイムスタンプを提供します。

  • カラーカメラを使用して、魚眼レンズをポーズに使用しますか?

はい、あなたは正しいです。

  • 私は2つのタンゴのインスタンスを起動するJavaやC(すなわち、単に画像の問題のためのCを使用し、次にJavaでタンゴのインスタンスを作成して) を混在させることはできますが、それは意志、それが動作するにもかかわらず、実際にタンゴがサポートされている方法ではありません非常にハッキーです。

一時的なウォークアラウンドとして、おそらくビューの描画キャッシュを使用しようとする可能性がありますか?

+0

nope - 私はその子犬を地面にまっすぐに走らせました。私は、デバイスを根絶しない限り、そのパスのビットを取得します。しかし、私は今C + +のものを実行しています。 TangoService_connectOnFrameAvailableは定期的に起動しています。残念ながら、それが発砲しているときには、接続テクスチャの結果として起こる画像の更新が止まったように見えます。しかし、少なくとも私はビットに私の手を持っている! –