2016-07-04 4 views
1

私は自宅のARキットとタンゴを組み合わせるためにタンゴのカメラストリームを取得しようとしています。タンゴのカメラストリームデータを取得する

私はTangoのエディタエミュレーションで意図されているようにすべて動作するが、タブレットにプッシュされたアプリでは機能しません。

私が使用しているコードは以下の通りです:(タンゴのYUV2RGBシェーダから抽出)

YUVTexture yuvTexture = m_tangoApplication.GetVideoOverlayTextureYUV(); 
Texture2D yTexture = yuvTexture.m_videoOverlayTextureY; 
// m_videoOverlayTextureCr is not used by Tango yet for some reason 
Texture2D uvTexture = yuvTexture.m_videoOverlayTextureCb; 

// convert from YV12 to RGB 
for (int i = 0; i < yTexture.height; ++i) 
{ 
    for (int j = 0; j < yTexture.width; ++j) 
    { 
     Color yPixel = yTexture.GetPixel(j, i); 
     Color uvPixel = uvTexture.GetPixel(j, i); 

     m_texture.SetPixel(4 * j + 0, yTexture.height - i - 1, YUV2Color(yPixel.r, uvPixel.r, uvPixel.g)); 
     m_texture.SetPixel(4 * j + 1, yTexture.height - i - 1, YUV2Color(yPixel.g, uvPixel.r, uvPixel.g)); 
     m_texture.SetPixel(4 * j + 2, yTexture.height - i - 1, YUV2Color(yPixel.b, uvPixel.b, uvPixel.a)); 
     m_texture.SetPixel(4 * j + 3, yTexture.height - i - 1, YUV2Color(yPixel.a, uvPixel.b, uvPixel.a)); 
    } 
} 

YUV2Color:

public static Color YUV2Color(float y_value, float u_value, float v_value) 
{ 
    float r = y_value + 1.370705f * (v_value - 0.5f); 
    float g = y_value - 0.698001f * (v_value - 0.5f) - (0.337633f * (u_value - 0.5f)); 
    float b = y_value + 1.732446f * (u_value - 0.5f); 

    return new Color(r, g, b, 1f); 
} 

誰かがすでにこの問題を解決しましたか?これまでのところ、それは私が得た最も近いされている、私は多くのことを経験してきた

ITangoVideoOverlayが主に使用されたとき、私はそれに関連する記事をたくさん見てきましたが、現在IExperimentalTangoVideoOverlayと何も私が期待したものに...どんな助けも高く評価されるでしょう。

答えて

2

テクスチャIDメソッドを使用してYUVテクスチャカラーを取得していますが、これはあまり一般的ではありません。簡単にパスがそれを行うために、カラーカメラ画像を取得するためにRaw Byteバッファ法を使用して次のようになります。

  1. プレハブTangoManagerでは、ビデオオーバーレイを有効にし、ドロップダウンボックスからRaw Byte方法を選択します。
  2. ITangoVideoOverlayに登録してください。
  3. この部分が正確YUV2Color機能と同様であるが、TangoImageData.data
からのデータを使用して、RGBをYUVから画像バッファデータを変換
関連する問題