Как модифицировать массив byte[] data, получаемый из onPreviewFrame?

В onPreviewFrame попадает массив byte[] data в формате YUV (NV21). Как перевести это в rgb массив я знаю. Но, поскольку я работаю непосредственно с яркостью изображения, мне удобно работать с компонентой Y в исходном массиве. В сети много примеров, как получить RGB из NV21 и как записать компоненты RGB в YUV массив. Но мне бы хотелось во избежание этих преобразований редактировать компоненту Y (яркость) и сразу записать ее обратно в YUV массив. Если делать в лоб, то получается зеленый экран. Может кто-то делал подобное и подскажет как правильно это делать. Заранее спасибо.
  • Вопрос задан
  • 4552 просмотра
Пригласить эксперта
Ответы на вопрос 1
Malinskiy
@Malinskiy
byte[] data, который Вы получаете в preview, в глобальном понимании immutable. т.е. менять его Вы, конечно, можете, но это никоим образом не будет отражаться на ассоциированном SurfaceHolder'е. Если Вы хотите изменять data, то нужно сделать дополнительный View и отдельно у себя в коде его отображать, например конвертированием в Bitmap и далее в ImageView, примеры таких операций Вы уже похоже находили.
onPreviewFrame не более чем механизм notification от Android. Все отображение происходит за рамками вашего кода, Вы лишь указываете куда писать preview.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы