Обработка видео с камеры в фоновом режиме - PullRequest
2 голосов
/ 06 июля 2011

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

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

1 Ответ

2 голосов
/ 06 июля 2011

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

camera.setPreviewDisplay(nameofsurface);

и измените ее на

camera.setPreviewDisplay(null);

Всекадры камеры по-прежнему будут доступны в вашем общедоступном 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());
...