2016-07-04 8 views
1

Ich versuche, den Tango-Kamera-Stream zu bekommen, um ein hausgemachtes AR Kit zu Tango zu kombinieren.Getting Tango Kamera Stream-Daten

Ich bin an einem Punkt fest, wo alles wie in Tangos Editor-Emulation funktioniert, aber nicht in der App auf das Tablet geschoben.

Der Code Ich verwende ist die folgende:

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 (extrahiert aus Tango YUV2RGB Shader):

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); 
} 

Hat jemand dieses Problem bereits gelöst? Ich habe eine Menge von Post es im Zusammenhang zu sehen, wenn die ITangoVideoOverlay meist verwendet wurde, aber nichts mit den aktuellen IExperimentalTangoVideoOverlay

Ich habe eine Menge Dinge ausprobiert, bisher hat es in der Nähe, die ich bekam zu dem, was ich erwartet habe ... Jede Hilfe würde sehr geschätzt werden.

Antwort

2

Sie verwenden die Texture ID-Methode, um die YUV-Texturfarbe zu erhalten. Dies ist nicht sehr häufig. Ein einfacher Weg wäre, die Raw Byte Pufferverfahren unter Verwendung von Farbkamerabild zu erhalten, das zu tun:

  1. Auf TangoManager Fertig, Video-Overlay aktiviert und Raw Byte Methode aus der Dropdown-Feld aus.
  2. Registrieren Sie sich zu ITangoVideoOverlay Schnittstelle.
  3. Konvertieren der Bildpufferdaten von YUV auf RGB, ist dieser Teil genau wie die Funktion YUV2Color ist, aber die Daten verwenden, um von TangoImageData.data