У меня уже есть SurfaceView, настроенный для изображений RGB, который работает нормально, и я считаю, что аппаратное обеспечение камеры создает данные RGB (потому что все настройки отображения тонов и усиления цвета в Android указаны для работы с каналами RGB).
Я могу получить изображения YUV_420_888 из ImageReader, создав ImageReader следующим образом:
Код: Выделить всё
imageReader = ImageReader.newInstance(W, H, ImageFormat.YUV_420_888, 4);
Однако, когда я пытаюсь создать программу чтения изображений таким образом:
Код: Выделить всё
imageReader = ImageReader.newInstance(W, H, PixelFormat.RGB_888, 4);
Код: Выделить всё
java.lang.UnsupportedOperationException: The producer output buffer format 0x22 doesn't match the ImageReader's configured buffer format 0x3.
at android.media.ImageReader.nativeImageSetup(Native Method)
at android.media.ImageReader.acquireNextSurfaceImage(ImageReader.java:293)
at android.media.ImageReader.acquireNextImage(ImageReader.java:339)
at android.media.ImageReader.acquireLatestImage(ImageReader.java:243)
at
Во-вторых, SurfaceView уже успешно принимает изображения RGB_888 (насколько я могу судить) и помещает их прямо на экран. Так почему же ImageReader не принимает изображения RGB должным образом? Что я сделал не так?
Подробнее здесь: https://stackoverflow.com/questions/257 ... magereader
Мобильная версия