Я искал преобразование байт NV21, который я получаю от onPreviewFrame(). Я искал форумы и Google для различных решений. Я попробовал RenderScripts и некоторые другие примеры кода. Некоторые из них дают мне изображение с желтым оттенком, некоторые дают мне изображение с красным и синим перевернутым (после того, как я переверну его обратно в коде, я получаю желтый оттенок назад), некоторые дают мне странные цветовые функции по всему изображению (почти как негатив), некоторые дают мне изображение в оттенках серого, некоторые дают мне изображение настолько темным, что вы ничего не можете сделать.NV21 для растрового изображения на Android, очень темное изображение, оттенки серого или желтый оттенок?
Поскольку я набираю вопрос, я понимаю, что я должен быть идиотом в комнате, поэтому мы начнем с this post. Это конкретное решение дает мне очень темное изображение, но я недостаточно крут, чтобы еще прокомментировать. Кто-нибудь пробовал это решение или имеет тот, который производит изображение с тем же качеством, что и оригинальный формат NV21?
Мне нужен либо действительный байт ARGB [], либо действительный Bitmap, я могу изменить свой проект, чтобы справиться с ним. Просто для справки, я попробовал эти (и некоторые другие, которые на самом деле являются копирку них):
One solution I tried
Another solution I tried
Вы также можете играть с «YUV_420_888» и «YV12», в случае, если буфер камеры не «NV21». –
Я пытаюсь это сделать, и я получаю и ошибки, которых я раньше не видел: «E/RenderScript: YuvToRGB выполняется без данных, пропуская» каждый кадр предварительного просмотра. Я попытался добавить «yuvPreviewAlloc.copyFrom (данные)»; просто чтобы быть уверенным, что это не так. Кто-нибудь сталкивался с этим? –
Это сообщение об ошибке обычно означает, что в yuvPreviewAlloc Allocation не было получено никаких данных из API камеры. Пожалуйста, дважды проверьте 1. Если rsPreviewSurface правильно настроена как выходная поверхность камеры. 2. Если вызывается ioReceive. 3. убедитесь, что вы используете «import android.renderscript. *», Так как USAGE_IO_INPUT не работает с поддержкой библиотеки RenderScript (import android.support.v8.renderscript). Я также добавил некоторые комментарии к коду, чтобы указать вам некоторую ссылку на код для настройки. –