Предварительный просмотр камеры на Raspberry Pi Android things

#android #kotlin #raspberry-pi #raspberry-pi2 #android-things

#Android #kotlin #raspberry-pi #raspberry-pi2 #android-вещи

Вопрос:

Я работал над приложением, которое работает на 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 things (см. Раздел JPEG на скриншоте ниже), но это не помогло.

введите описание изображения здесь

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

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

Ответ №1:

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

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

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

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

Комментарии:

1. Привет, спасибо за ответ! Я попробовал ваш образец и для инициализации предварительного просмотра; Мне пришлось добавить android:hardwareAccelerated="true" в манифест. Сообщение о том, что камера инициализирована, но предварительный просмотр по-прежнему завершается ошибкой со следующим сообщением в журналах ошибок: pastebin.com/ebfnMdKA

2. @the-dagger, я смог заставить предварительный просмотр работать на RPI3, удалив управление фокусом: github.com/proppy/android-Camera2Basic/commit / … не стесняйтесь попробовать еще раз!

3. Вау, теперь это работает! Огромное спасибо, я уже больше месяца этим занимаюсь.

4. какой FPS вы получили?

5. @the-dagger для меня предварительный просмотр запуска намного медленнее, чем приложение (я думаю, что первое может считывать необработанный кадр с помощью a ImageReader и вручную переводить их в an ImageView )