Как выделить отдельный кадр с камеры

Ответить
yura91
Сообщения: 265
Зарегистрирован: 22 авг 2014, 13:43

Как выделить отдельный кадр с камеры

Сообщение yura91 » 09 апр 2015, 12:40

У меня захватывается поток с камеры в surfaceview. Как получать из этого потока каждое отдельное изображение для анализа?? Можно ли как нибудь извлечь информацию из surfaceview и сохранить в bitmap?? Если да то как? можете фрагмент кода привести?

yura91
Сообщения: 265
Зарегистрирован: 22 авг 2014, 13:43

Re: Как выделить отдельный кадр с камеры

Сообщение yura91 » 09 апр 2015, 13:42

можно ли выделить кадр с камеры и сохранить в Bitmap??

Аватара пользователя
doter.ua
Сообщения: 1106
Зарегистрирован: 23 ноя 2013, 16:08
Откуда: Ukraine

Re: Как выделить отдельный кадр с камеры

Сообщение doter.ua » 09 апр 2015, 16:47

Семь раз отмерь - поставь студию.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.

yura91
Сообщения: 265
Зарегистрирован: 22 авг 2014, 13:43

Re: Как выделить отдельный кадр с камеры

Сообщение yura91 » 16 май 2015, 23:12

но это если выделять кадр с видеофайла а мне нужно с камеры устройства. Я видео с камеры снимаю. Но мне нужно обрабатывать отдельные кадры. Для этого я так понимаю нужна библиотека а без подключения библиотеки можно сделать??

Аватара пользователя
altwin
Сообщения: 1951
Зарегистрирован: 13 ноя 2013, 14:46

Re: Как выделить отдельный кадр с камеры

Сообщение altwin » 16 май 2015, 23:30

http://stackoverflow.com/a/9075166

вариант с этим - http://developer.android.com/reference/ ... Image.html, возможен, но всеже лучше использовать NDK.
Изображение

yura91
Сообщения: 265
Зарегистрирован: 22 авг 2014, 13:43

Re: Как выделить отдельный кадр с камеры

Сообщение yura91 » 01 июн 2015, 00:23

NDK может и лучше только с ним серьезные проблемы в Android Studio начиная с 1.0 например не удается подключить библиотеку stl. Поэтому NDK как я понимаю лучше подключать в eclipse и пользовать его там верно??

idementia
Сообщения: 1
Зарегистрирован: 20 июн 2016, 15:59

Re: Как выделить отдельный кадр с камеры

Сообщение idementia » 20 июн 2016, 16:12

altwin писал(а):http://stackoverflow.com/a/9075166

вариант с этим - http://developer.android.com/reference/ ... Image.html, возможен, но всеже лучше использовать NDK.
Если использовать OpenCV / JavaCV, существенно срезается частота дискретизации потока с камеры. Например, у меня с использованием SurfaceView и записи видео с помощью MediaRecorder телефон выдает 17 - 25 фпс, а через OpenCV - 15 - 17.

Долго плавал на стеке и вроде бы понял, что SurfaceView использует аппаратное ускорение, и нельзя так просто брать и цеплять каждый кадр, который на SurfaceView отрисовывается с достаточно высоким фпс.
Пробовал считать, сколько кадров захватывает Camera.CameraPreview.OnCameraPreview(byte[] data) - если в тело метода ничего не писать, то работает относительно быстро - у меня метод вызывался 18 - 21 раз в секунду. То есть по идее можно захватываемый методом массив data посылать в отдельный поток в его теле, где уже и что-то обрабатывать. Но мне кажется, что даже передача данных в поток его сильно замедлит, и кадры начнут теряться.

Все это я веду к тому, что есть вопрос, которым я мучаюсь уже не одну неделю. Как можно обрабатывать кадры с камеры с максимально возможным ФПС ?
Подскажите, пожалуйста, кто решал такую задачу.
Ведь есть же приложения с фильтрами и т. п., которые обрабатывают кадры с максимальным фпс. Если они это могут, значит и я могу. Не думаю, что во всех них используется прослойка в лице OpenCV.

Ответить