Пиксели m_videoOverlayTextureY недопустимы, но текстура корректно отображается с помощью GUI.DrawTexture.
Я пытаюсь получить изображение YUV с камеры, но когда я пытаюсь прочитать пиксели в YUVTexure
предоставлено GetVideoOverlayTextureYUV()
все пиксели установлены на "205". Странная вещь, я могу нарисовать текстуру 'Y' сGUI.DrawTexture(someRect, _texture.m_videoOverlayTextureY);
и я вижу изображение там, я просто не могу прочитать его с getPixels()
,
Я также использую Tango AR Camera
сборный в проекте так m_useExperimentalVideoOverlay
установлен в true. Мы попытались использовать неэкспериментальный API, но затем префаб AR Camera перестал работать.
Как кто-либо был в состоянии получить доступ к данным изображения в Unity, используя IExperimentalTangoVideoOverlay
?
1 ответ
Текстура от GetVideoOverlayTextureYUV
отличается от обычного Unity Texture2D. В Tango Unity SDK он создает объект Texture2D на уровне Unity и передает textureID в собственный API C++ для заполнения. Таким образом, значение пикселя текстуры не сохраняется в Unity, вместо этого оно копируется в память GPU непосредственно из собственного кода, а текстура Unity имеет только textureID этого объекта. Вот почему это может быть вынесено, но не может быть прочитано.
Чтобы получить реальный байтовый буфер от цветной камеры, вы должны использовать интерфейс ITangoVideoOverlay. Обратный вызов возвращает буфер YUV, функция преобразования в RGB такая же, как в YUV2RGB.shader.