Определение мест в предоставленном изображении с помощью Firebase MLKit

Этот рассказ является четвертым в серии MLKit для мобильных разработчиков.
Если вы не совсем в курсе, можете начать здесь:



Пит-стопы серии

Следуя предыдущим статьям об API-интерфейсах Маркировка изображений, Распознавание текста и Сканер штрих-кода, в этом посте я расскажу о четвертом API, то есть API обнаружения ландшафта, и о том, как вы можете использовать его для добавления мощные функции машинного обучения в вашем приложении!

API-интерфейс Landscape Detector позволяет нам помечать и идентифицировать некоторые общие места на изображениях, предоставленных пользователем.
Например, с помощью этого API вы можете сортировать фотографии, предоставленные пользователем, по месту, где они были сделаны.

Аккуратно, не правда ли?

Прежде чем мы начнем, вот несколько скриншотов из приложения, которые демонстрируют конечный результат:

API может обнаруживать несколько ориентиров на данном изображении, а также определять точность, широту, долготу и название этого местоположения.

В отличие от API, который мы рассмотрели ранее, для устройства нет доступного варианта API, и вам необходимо перейти на план Firebase Blaze, чтобы использовать его.

Но не волнуйтесь, вы можете смело скачать apk этого примера проекта, если хотите опробовать этот API и не хотите за него платить;)

Код для примера приложения, приведенного выше, можно найти здесь, не стесняйтесь его разветвлять и следовать:



Как упоминалось ранее, у этого API есть только вариант Cloud, который работает в Google Cloud.
Когда вы передаете изображение в этот API, вы получаете ориентиры, которые были распознаны в нем, вместе с географическими координатами каждого ориентира и областью изображения, на котором был найден ориентир.
Это бесплатно для первых 1000 запросов что достаточно хорошо, если вы просто хотите поиграть.

Без промедления приступим к реализации!

  • Настройте Firebase в своем проекте и добавьте зависимость видения
    Это очень просто, просто настройте firebase в своем проекте. Вы можете найти хорошее руководство здесь.
    Чтобы использовать этот API, вам также необходимо добавить следующие зависимости.
  • Добавьте в приложение функцию выбора изображений.
    API Vision требуется изображение для извлечения данных, поэтому вы можете смело реализовывать функции выбора изображений в приложении. < br /> Я обнаружил, что эта библиотека довольно удобна и проста в использовании вместо того, чтобы реализовывать средство выбора изображений вручную, так что вы можете свободно взглянуть на нее.
    Библиотека возвращает файл , который упрощает преобразование файла в Bitmap и передачу его в API Firebase.
  • Преобразование выбранного файла в растровое изображение
    Если вы использовали указанную выше библиотеку, она предоставляет вам объект File для захваченного изображения, который вы легко конвертируете в растровое изображение с помощью BitmapFactory.decodeFile () метод.

Как вы можете видеть в приведенном выше коде, я проверил и запросил разрешение времени выполнения для доступа к внешнему хранилищу, и только когда у меня было разрешение, я добавил onClickListener к моему floatActionButton в строке 30.

Средство выбора изображений запускается в строке 16, а выбранное изображение преобразуется в растровое изображение в строке номер 43.

  • Используйте растровое изображение для вызова API
    . Вызов API очень прост: просто передайте растровое изображение в объект FirebaseVisionCloudLandmarkDetector, и все готово. !

В приведенном выше фрагменте кода мы сначала создаем FirebaseVisionImage из растрового изображения.

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

Наконец, мы передаем изображение методу detectInImage (), и API творит чудеса! ✨

У нас есть успешный и неудачный обратный вызов, который содержит список объектов FirebaseVisionCloudLandmark, содержащий все обнаруженные ориентиры и их информацию.

Кроме того, мы можем просмотреть приведенный выше список и получить информацию, содержащуюся в каждом обнаруженном ориентире.
Для каждого ориентира вы также можете получить его ограничивающие координаты во входном изображении в случае, если вы хотите выделить Ориентир отдельно.

И на этом все, я собираюсь изучить оставшиеся API MLKit, так что ждите статей по ним достаточно скоро!

Если вы хотите поиграть с приложением, показанным на снимках экрана, вы можете создать его из репозитория GitHub, который я указал выше, и оно должно хорошо работать после добавления его в ваш проект Firebase.

P.S. Вам также необходимо настроить биллинг для вашего проекта Firebase, обновив его до плана Blaze и включив Google Vision API в вашей облачной консоли Google, чтобы функциональность Landmark работала должным образом.

Спасибо за внимание! Если вам понравилась эта история, пожалуйста, нажмите 👏 кнопку и поделитесь, чтобы помочь другим найти ее! Не стесняйтесь оставлять комментарии 💬 ниже.
Хотите оставить отзыв? Давайте подключимся в Твиттере.