banner
Qt/C++. Матрица настроек в программе "Objects Detection".

Что такое матрица настроек в программе "Objects Detection" и для чего она нужна? Чтобы понять все и сразу, взгляните на рисунок. Это изображение содержит матрицу настроек программы. В первый слева вертикальный столбец таблицы включены имена объектов нейронной сети. Верхняя горизонтальная строка таблицы состоит из имен Activity, реализованных в программе на настоящий момент. Некоторые клетки на пересечении строк и столбцов содержат включенные CheckBox. Как это определяет работу программы? Например, вторая с верху строка интерпретируется программой так: ищем объекты типа "Person". Если найдем, то выполним следующие действия: озвучим (проговорим) имена объектов, сохраним изображения найденных объектов в локальной базе данных, запишем все звуки, поступающие с микрофона в файл на диск.
Обратите внимание, что число возможных комбинаций (вариантов для выбора) в матрице очень велико, и будет увеливаться по мере включения новых Activity. Это обстоятельство потребовало доработать программу с целью сохранения на диске конкретной матрицы в виде файла. По принципу одна матрица - один файл. Другими словами, в программе реализован хорошо знакомый механизм Save As, Save, Open, Open Recent для выбранных пользователем настроек программы.
Сохранение матриц на диске позволяет, во первых, не выполнять настройку программы в ручном режиме, а загрузить файл с нужной матрицей. Во вторых, у программы появилась (потенциальная) возможность самой загружать файлы настроек в зависимости от того, какие объекты, когда и где она обнаружила.
Текущую версию программы "Objects Detection" определим как 1.0. При разработке были выявлены и исправлены ошибки.
Это двенадцатая статья из цикла "Real-Time Object Recognition". Первые одиннадцать опубликованы здесь: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 и 11.
При разработке программ "Objects Detection" использовались:
  • операционная система macOS Big Sur версия 11.6.2;
  • среда разработки Xcode 13.2.1;
  • среда разработки Qt Creator версия 8.0.0;
  • компилятор Apple Clang версия 13.0.0 (clang-1300.0.29.30);
  • библиотека OpenCV версия 4.5.5
  • нейронная сеть из группы YOLO, обученная на наборе данных COCO.
  • СУБД (система управления базами данных) PostgreSQL 14.1
  • администратор баз данных pqAdmin 4 version 6.4
1. Программа "Objects Detection" выполняет следующие функции:
  • принимает поток данных с видеокамеры в режиме реального времени;
  • детектирует объекты с помощью нейронной сети (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 для файлов, содержащих матрицы настроек.
2. Как реализована матрица настроек.
Матрица реализована в классе CheckBoxMap, данные в неё копируются из map<int, vector<int>>. В C++ эту структуру называют ассоциативным контейром, в Swift словарем. В контейнер данные заносятся из ComboBox и CheckBox класса SelectName или из файла при считывании ранее сохраненной матрицы. Можно ли было реализовать ввод данных непосредственно в матрицу? Безусловно, можно. Но выбрано другое решение.
Операции: Save As, Save, Open, Open Recent реализованы в классе MainWindow, для текущей версии в строках: 407 - 678. Файлы имеют расширение setlist. Эта часть кода написана на основе примера MDI Qt/C++.

Ниже показан пример матрицы настроек.

settings_image.png
Полное описание исходного текста программ "iOS MQTT Client", "macOS MQTT Client", "Objects Detection" предоставляется платно в файлах pdf или odt при запросе через e-mail: veresov@jdesign.ru.
Проект можно загрузить.
Евгений Вересов.
07.01.2023 года.