Qt/C++. Распознавание объектов и место на карте.
В программу распознавания объектов "Objects Detection" добавим возможность формирования карты с указанием места (текущих координат), где обнаружен тот или иной
объект. Это позволит воспринимать сцену, получаемую с видео камеры более полно.
При разработке программы использованы типы QML/Qt Quick: Map, MapItemView, PositionSource, Plugin и другие.
QML - это язык разметки пользовательского интерфейса, а Qt Quick предоставляет библиотеку типов и функций для QML.
За основу при реализации карты взят пример из документации
places_map, который был модифицирован под требования
программы "Objects Detection".
Объем кода С++ в части создания карты минимален - всего около 30 строк. Bсе остальное выполнено средствами QML.
Это седьмая статья из цикла "Real-Time Object Recognition".
Первые шесть обубликованы здесь:
1, 2,
3, 4,
5 и 6.
При разработке программы использовались:
1. Программа Object Detector выполняет следующие функции:
2. Реализация карты и места обнаружения обьекта(объектов).
Весь исходный QML код проекта находится в ресурсах в файле map.qml.
Тип Qt Quick Map используется для отображения карты. Для Map требуется плагин гео-сервисов. В проекте мы использовали Plugin "OSM" (Open Street Map).
Перечень используемых серверов "OSM" можно увидеть в исходном тексте файла map.qml.
Тип PositionSource предоставляет информацию о текущей позиции видео камеры.
В нашем проекте это значение находится в переменной
var currentPosition = positionSource.position.coordinate.
Тип MapItemView используется для заполнения карты дополнительными метками. Этот тип содержит два основных элемента: model и delegate.
Model обеспечивает текущие координаты. Delegate предназначен для визуализации меток. В программе он выводит на карту в точку
с координатами маркер и подпись.
Код С++ для работы с картой находится в файлах: main.cpp и mainwindow.cpp.
Как уже было сказано, объем кода не велик. Обратите внимание на то, какие параметрами передаются в объект класса
MainWindow: MainWindow(QQmlContext *objectContext, QObject *objectMap, QWidget *parent ).
Пример работы программы приведен на снимке экрана 1.
Cнимок экрана 1.
Полное описание текста программы предоставляется платно в файлах pdf или odt.
|