public void onPreviewFrame(byte[] data, Camera camera)
мы получаем данные в формате YUV. Теперь для преобразования в RGB я использовал конвертер в NDK. Но это еще не достаточно быстро.
Так что я нашел это: http://www.roman10.net/effective-color-conversion-yuv-rgb-in-android-in-assembly/
, который имеет этот метод NDK: https://github.com/roman10/roman10-android-tutorial/blob/master/colorConversion/jni/test.c
, но я не знаю, как изменить его, чтобы он принял бы YUV массив байтов «данных» и вернуть мне массив RGB int?
Я googled для GetByteArrayElemnts(), но все еще не знаю, как получить значения YUV из байта [] – tomi
Байт [], который вы получаете от камеры, является полупланарным: сначала введите Y байты (_width * _height), а после этого - (_width * _height/4) пары байтов V и U. Как я вижу, библиотека, которую вы собираетесь использовать, поддерживает только плоскостной YUV (где U пикселей и V пикселей отдельно). Вам, вероятно, потребуется написать свою собственную функцию на основе их кода, который принимает полупланарный ввод. –
THX для объяснения. – tomi