banner
Qt/C++. Installation of the Object Detector Program.

Программа Object Detector может выполнять множество различных действий (Activity). Например, озвучивать (проговаривать) имена распознанных объектов, записывать на диск звуки, поступающие с микрофона, сохранять изображения объектов в базе данных и так далее, всего таких Activity 10. Взгляните на рисунок, показывающий все возможности программы.
Однако всегда ли необходимо включать в состав проекта все Activity? И насколько удобно переносить программу с таким перечнем модулей с одной версии Qt на другую? Как ответ на эти вопросы в текущую версию (1.4) прграммы добавлена возможность отключать/включать следующие Activity: MQTT, Bluetooth, Speech.
Что необходимо сделать, чтобы отключить/включить указанные Activity? Немногое. Например, для MQTT достаточно в файле проекта закоментировать/раскоментировать пару строк, вот так: #QT += mqtt и #DEFINES += MQTT_USE. Аналогичные действия можно выполнять и для других модулей Qt и Activity.
На чем основана возможность декомпозиции программы? Дело в том, что в Qt есть технология определения макросов директивой DEFINES. Например, так: DEFINES += BLUETOOTH_USE. Затем этот макрос можно использования в файлах: pro, headers, sources для работы с фрагментами текстов, относящихся к Bluetooth. Более подробно об этом рассказано здесь.
Это шестнадцатая статья из цикла "Real-Time Object Recognition". Первые пятнадцать опубликованы здесь: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 и 15
При разработке программ использовались:
  • операционная система macOS Big Sur версия 11.6.2;
  • среда разработки Qt Creator версия 8.0.0;
  • компилятор Apple Clang версия 13.0.0 (clang-1300.0.29.30);
  • библиотека OpenCV версия 4.5.5
  • нейронная сеть из группы YOLO, обученная на наборе данных COCO.
  • СУБД (система управления базами данных) PostgreSQL 14.7
  • администратор баз данных pqAdmin 4 version 6.4
1. Программа "Object Detector" выполняет следующие функции:
  • принимает поток данных с видеокамеры в режиме реального времени;
  • детектирует объекты с помощью нейронной сети (Deep Neural Networks) yolov4-tiny;
  • принимает настройки пользователя для установки связи между объектами и действиями;
  • озвучивает (произносит) имена обнаруженных объектов и вероятности их распознавания;
  • принимает и устанавливает настройки пользователя для модуля голосовых данных (высоту тона, громкость, скорость речи);
  • сохраняет изображения обнаруженных объектов (images) в виде jpg файллов на SSD диске и ссылки на них в базе данных PostgreSQL;
  • отсылает файлы images по заданному в программе e-mail адресу;
  • отсылает файлы images по протоколу FTP на удаленный сервер;
  • записывает звук с микрофона на SSD диск в виде wav файлов;
  • отображает в Status Bar приложения уровень звукового сигнала, поступающего на вход микрофона;
  • выводит на экран сохраненные на диске images;
  • формирует текущeе графическое положение устройства и сохраняет его в базе данных;
  • подключается к брокеру broker.hivemq.com;
  • подписывается на канал приема команд от программы Client Mqtt;
  • передает программе Client Mqtt через брокера фотографии обнаруженных объектов;
  • выполняет команды, полученные от приложения Client Mqtt;
  • тестирует исправность канала связи Mqtt;
  • открывает карту и показывает место нахождения (обнаружения) объекта(объектов);
  • выполняет SQL выборки по комбинациям параметров: тип объекта, период времени, вероятность распознавания;
  • предоставляет возможность редактирования снимков распознанных объектов;
  • загружает с веб сервера HTML страницу с фотографиями распознанных объектов и сохраняет ее на локальном диске компьютера;
  • сканирует и находит устройства Bluetooth;
  • подключается к выбранному пользователем устройству Bluetooth, образуя пару;
  • пересылает на удаленное устройство Bluetooth, например, телефон файлы изображений, распознанных программой объектов.
  • формирует матрицы настроек программы;
  • выполняет операции: Save As, Save, Open, Open Recent для файлов, содержащих матрицы настроек;
  • выполняет операции connect/disconnect для клиентов, работающих по протоколу TCP/IP;
  • выполняет операции read/send для объектов QByteArray и QString, содержащих изображения и имена файлов изображений по протоколу TCP/IP;
  • реализует протоколы SSL и WebSocket.
  • запускает/останавливает QuickTime Player для создания видео клипов.
  • включает/отключает Activity: MQTT, Bluetooth, Speech.

2. Определение и использование макросов.

Вот так в файле проекта выглядит подключение модуля Qt и определение макроса, обеспечивающего работу с Bluetooth:
QT += bluetooth,
DEFINES += BLUETOOTH_USE.
А вот так в состав проекта включаются формы (файлы ui) для работы с Bluetooth:
contains(DEFINES, BLUETOOTH_USE) {
FORMS += device.ui progress.ui service.ui
},
и файлы, содержащие исходные тексты классов Bluetooth:
contains(DEFINES, BLUETOOTH_USE){
SOURCES += device.cpp progress.cpp service.cpp
}
Более подробно об использовании модулей и макросов Qt можно посмотреть в файле проекта Object Detector. Кроме файла проекта макросы используются в файлах заголовков и исходников (headers, sources).
Ниже показан перечень Activity, поддерживаемых программой.

setup.png

Полное описание исходных текстов проектов "Objects Detection version 1.4", "iOS MQTT Client", "macOS MQTT Client", "Client TCP", "SslWebSocketServer", "SslWebSocketClient" предоставляются платно в файлах pdf или odt при запросе через e-mail: veresov@jdesign.ru.
Проекты можно загрузить и поблагодарить: Спасибо!  2202   2005   9442   6213   (сбербанк)
Евгений Вересов.
10.05.2023 года.