#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/ebfnMdKA2. @the-dagger, я смог заставить предварительный просмотр работать на RPI3, удалив управление фокусом: github.com/proppy/android-Camera2Basic/commit / … не стесняйтесь попробовать еще раз!
3. Вау, теперь это работает! Огромное спасибо, я уже больше месяца этим занимаюсь.
4. какой FPS вы получили?
5. @the-dagger для меня предварительный просмотр запуска намного медленнее, чем приложение (я думаю, что первое может считывать необработанный кадр с помощью a
ImageReader
и вручную переводить их в anImageView
)