Сохраняйте кадры в файл onFrameAvailable [Google Project Tango]

Я пытаюсь сохранить в файлы кадры RGB вместе с данными позы, а затем выполнить для них некоторую пост-обработку. Основная проблема заключается в том, что в настоящее время единственный способ сделать это с помощью Tango Java API — отобразить в GLSurfaceView, подключив их через

tangoCameraPreview.connectToTangoCamera(mTango,TangoCameraIntrinsics.TANGO_CAMERA_COLOR);

Затем вы должны использовать GlReadPixels для чтения пикселей в массив и сохранения их в файл.

Проблема в том, что GlReadPixels работает медленно. На самом деле, используя это, я получаю около 3-4 кадров в секунду, используя то, что я только что описал.

Глядя на другие, более общие ответы о серийной фотосъемке, я видел, как разные люди говорили, что при использовании SurfaceView вместо GlSurfaceView им удалось получить до 15 кадров в секунду.

Я не нашел способа использовать SurfaceView с камерой танго, так как connectToTangoCamera нужен GlSurfaceView, и я не могу просто использовать Camera и привязать его к SurfaceView, потому что, когда я пытаюсь открыть его (через Camera.open()), он уже используется Tango. Tango должен использовать его, чтобы получить данные colorToIMUPose.

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


person Mihai Bujanca    schedule 17.02.2016    source источник


Ответы (1)


Вы можете использовать C++ API с TangoService_connectOnFrameAvailable, где вы получите буфер кадра YUV с разумной скоростью. Ознакомьтесь с примером танго c video-overlay-jni- пример, где они выполняют преобразование RGB. Я использую этот способ для подключения фильтров OpenCV к процессу рендеринга.

person stetro    schedule 18.02.2016