Обработка видео с камеры в фоновом режиме

Можно ли обрабатывать (получать пиксели с камеры и применять какие-то алгоритмы) видео в фоновом режиме? То есть без фактического вывода видео на экран.

Если это возможно, какие есть хорошие учебники/примеры?


person Enrique    schedule 06.07.2011    source источник


Ответы (1)


Это может сработать. Предполагая, что у вас уже есть код, который в настоящее время отображает предварительный просмотр камеры на экране, найдите строку, которая выглядит примерно так:

camera.setPreviewDisplay(nameofsurface);

и измените его на

camera.setPreviewDisplay(null);

Все кадры камеры по-прежнему будут доступны в вашем методе public void onPreviewFrame(byte[] data, Camera camera).

Если вы еще не знаете, как это сделать, добавьте следующие строки в этот метод в начале, чтобы преобразовать массив байтов в растровое изображение для ваших целей обработки.

Camera.Parameters parameters = camera.getParameters();

                    int width = parameters.getPreviewSize().width;
                    int height = parameters.getPreviewSize().height;

                    ByteArrayOutputStream outstr = new ByteArrayOutputStream();
                    Rect rect = new Rect(0,0, width, height); 
                    YuvImage yuvimage=new YuvImage(data,ImageFormat.NV21,width,height,null);
                    yuvimage.compressToJpeg(rect, 100, outstr);
                    Bitmap bmp = BitmapFactory.decodeByteArray(outstr.toByteArray(), 0, outstr.size());
person Bornfree    schedule 06.07.2011
comment
Я попробовал это, и это сработало, но проблема в том, что BitmapFactory.decodeByteArray возвращает неизменяемый bmp, поэтому, когда я пытаюсь bmp.setPixel(1,1,Color.RED), возникает исключение IllegalStateException. Как я могу создать изменяемый Bitmap? - person Enrique; 28.07.2011