2013-08-08 3 views
0

Я использую Zxing API для декодирования некоторых изображений QR-кода. Мне нужно преобразовать формат YUV в формат -> RGB, который будет использоваться в другом приложении.Zxing камера и формат предварительного просмотра (YUV, RGB ...)

Я знаю, что буфер камеры возвращает байт [] в формате NV21 (YUV), но какой он?

  • Могу ли я получить формат с YUV420? Или a YUV422 формат?
  • Если да, то как мне преобразовать этот формат в формат RGB888? Нужно ли мне для преобразования YUV в YUV888 до этого?

Спасибо за ваше время,

EDIT: Одна вещь, которую я не undestand длина байта [] из YUV420 предварительного просмотра кадра. Для разрешения 1280 * 720 я получаю 1 382 400,00 байт. Как он рассчитывается?

ответ

1

NV21 - в основном YUV420. Вы можете конвертировать непосредственно: http://en.wikipedia.org/wiki/YUV#Y.27UV420p_.28NV21.29_to_ARGB8888_conversion

+0

О, если я просто хочу формат RGB, мне придется удалить альфа-пиксель после преобразования википедии? – hico

+0

Да, просто проигнорируйте это полностью. В коде только что добавлен четвертый байт «0xFF», который уже неявно присутствует в RGB888. –

+0

Хорошо, попробую. Но вы уверены, что это YUV420? Я понимаю, почему я получаю 1 382 400 байт для разрешения 1280 * 720. Вы знаете, как он рассчитан? – hico

0

Хотя принятый ответ правильный, то стоит отметить, что библиотека ZXing включает PlanarYUVLuminanceSource, который инкапсулирует это преобразование и может ограничить пиковое использование памяти, если доступ декодера данных строки в каждом конкретном ряд.