Можно ли обрабатывать (получать пиксели с камеры и применять какие-то алгоритмы) видео в фоновом режиме? То есть без фактического вывода видео на экран.
Если это возможно, какие есть хорошие учебники/примеры?
Можно ли обрабатывать (получать пиксели с камеры и применять какие-то алгоритмы) видео в фоновом режиме? То есть без фактического вывода видео на экран.
Если это возможно, какие есть хорошие учебники/примеры?
Это может сработать. Предполагая, что у вас уже есть код, который в настоящее время отображает предварительный просмотр камеры на экране, найдите строку, которая выглядит примерно так:
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());
BitmapFactory.decodeByteArray
возвращает неизменяемый bmp, поэтому, когда я пытаюсь bmp.setPixel(1,1,Color.RED)
, возникает исключение IllegalStateException. Как я могу создать изменяемый Bitmap?
- person Enrique; 28.07.2011