Я использую API camera2 для получения потока изображений формата ImageFormat.YUV_420_888
. Мне нужно немного обработать их с помощью библиотеки, которая требует отправки изображения в виде байтового массива RGB (поэтому byte array length = width * height * 3
)
Я использовал этот поток (а также, вероятно, все другие), чтобы преобразовать изображение в байтовый массив RGB (который, кажется, работает, по крайней мере, тот массив байтов результата - тот, который мне нужен).
Кроме того, вот точный код, который я использовал для преобразования YUV_420 в RGB, в Kotlin, с некоторыми обновлениями: https://gist.github.com/VictorMotogna/e7a8493af65be994f29f5508660dd4a9
Проблема заключается в том, что преобразование завершается с сообщением A/libc: Fatal signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0xe00000084 in tid 20776 (package name), pid 20776
после нескольких попыток.
Я пробовал другие форматы изображений, другие преобразования, похоже, ничего не работает - я либо получаю тот же самый cra sh (при использовании YUV_420 или NV21), либо не могу получить правильное изображение / преобразование.
Одна вещь, которая, казалось, помогла: было android:hardwareAccelerated="false"
приложение зависало после гораздо большего числа запусков, чем с android:hardwareAccelerated="true"
Я не знаю, помогает ли это ?
Кто-нибудь знает как это исправить?