Показать предварительный просмотр камеры на Android Raspberry Pi - PullRequest
0 голосов
/ 11 апреля 2019

Я работал над приложением, которое работает на Raspberry Pi с Android Things и должно показывать предварительный просмотр камеры на внешнем дисплее, а к демонстрации прилагается кнопка, которая при нажатии захватывает изображение с камерыи выполняет некоторые вычисления для этого захваченного изображения.

Я успешно завершил вторую часть, но при попытке получить предварительный просмотр камеры на экране приложение вылетает для меня.Я получил свой RPi вчера и попытался запустить пример Camera2 на Github (https://github.com/googlesamples/android-Camera2Basic), но столкнулся с той же проблемой, что и раньше.

I/CameraManagerGlobal: Connecting to camera service
2019-04-01 00:18:19.670 4625-4650/com.example.android.camera2basic W/CameraDevice-JV-0: Stream configuration failed due to: endConfigure:372: Camera 0: Unsupported set of inputs/outputs provided
2019-04-01 00:18:19.682 4625-4650/com.example.android.camera2basic E/CameraCaptureSession: Session 0: Failed to create capture session; configuration failed

Я также попытался изменить ширину и высотуПредварительный просмотр внутри ImageReader до одного из совместимых размеров, как показано на моей консоли вещей Android (см. раздел JPEG на скриншоте ниже), но это не помогло.

enter image description here

Однако я нашел репозиторий на Github, который дает мне предварительный просмотр в реальном времени на плате RPi, но недостатком является то, что у него ужасная частота кадров (10-15 FPS). Ссылка на репозиторий: https://github.com/harshithdwivedi/CameraDemoForAndroidThings

Буду признателен за любые идеи или указания по этому вопросу!

1 Ответ

2 голосов
/ 12 апреля 2019

Как отмечалось в другой проблеме , камера HAL RPI3 поддерживает только одну поверхность цели за раз, это очевидно происходит из ограничения базовой реализации V4L2.

Возможен следующий обходной путь:

  • для предварительного просмотра: используйте SurfaceView в качестве целевой поверхности
  • при съемке: в CaptureCallback используйте PixelCopy для захвата необработанного кадра с поверхности

Вы можете найти предварительный пример на основе android-Camera2Basic образца kotlin: здесь

...