Qt/C++. Object Detector. Обновление приложения до версии 1.7.2.
Текущая редакция программы содержит обновления версии Object Detector 1.7.1, опубликованной в предыдущей статье.
В реальном мире часто важны ответы на вопросы: Что? Где? Когда?. В практике распознавания объектов ответы на эти вопросы звучат так:
- имя обнаруженного объекта и достоверность его распознавания;
- место обнаружения - это вектор геопозиции для последующей возможной привязки к карте;
- дата и время обнаружения;
- фотография объекта.
В программу внесены следующие изменения:
- доработан алгоритм открытия видео камеры;
- работа протокола SMTP перенесена из основного потока (GUI) в отдельный. Использован класс QThread;
- к передаваемым по e-mai данным: фотографии обекта, дате и времени обнаружения добавлены: имя объекта, достоверность его распознавание и географические координаты.
- упрощен алгоритм работы с базой данных;
- протоколы, реализующие передачу данных, создаются не по запуску программы, как было ранее, а выборочно, по мере необходимости.
На рисунке показан фрагмент кода из файла mainwindow.cpp, который запускает то или иное действие (Activity or Protocol).
Это двадцатая статья из цикла "Real-Time Object Recognition".
Первые девятнадцать опубликованы здесь:
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18 и
19.
При разработке программ использовались:
- операционная система macOS Big Sur версия 11.7.10;
- среда разработки Qt Creator версия 12;
- программа сборки CMake 3.26.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 файллов на диске и ссылки на них в базе данных PostgreSQL;
- отсылает файлы с фотографиями, именами объектов, временем и датой, геопозицией обнаруженных объектов по заданному в программе e-mail адресу;
- отсылает файлы images по протоколу FTP на удаленный сервер;
- записывает звук с микрофона на диск в виде m4a файлов;
- отображает в отдельном окне приложения звуковой сигнал, поступающий на вход микрофона;
- выводит на экран сохраненные на диске images;
- формирует текущeе географическое положение устройства и сохраняет его в базе данных;
- подключается к брокеру broker.hivemq.com;
- подписывается на канал приема команд от программы Client Mqtt;
- передает программе Client Mqtt через брокера фотографии обнаруженных объектов;
- выполняет команды, полученные от приложения Client Mqtt;
- тестирует исправность канала связи Mqtt;
- открывает карту и показывает место нахождения(обнаружения) объекта(объектов);
- выполняет SQL выборки по комбинациям параметров: тип объекта, период времени, вероятность распознавания;
- предоставляет возможность редактирования снимков распознанных объектов;
- загружает с веб сервера HTML страницу с фотографиями распознанных объектов и сохраняет ее на локальном диске компьютера;
- передает изображения обнаруженных программой объектов на сервер по протоколу HTTP POST;
- формирует матрицы настроек программы;
- выполняет операции: Save As, Save, Open, Open Recent для файлов, содержащих матрицы настроек;
- выполняет операции connect/disconnect для клиентов, работающих по протоколу TCP/IP;
- выполняет операции read/send для объектов QByteArray и QString, содержащих изображения и имена файлов изображений по протоколу TCP/IP;
- реализует протоколы SSL и WebSocket;
- запускает/останавливает QuickTime Player для создания видео клипов;
- измеряет, выводит на экран и озвучивает дистанции до распознанных объектов;
- сохраняет на диске видео с камеры в файлах формата avi.
2. Пример исходного кода.
3. Документация на проекты.
Полное описание исходных текстов проектов: Object Detector version 1.7.2, iOS MQTT Client, macOS MQTT Client, Client TCP, SslWebSocketServer, SslWebSocketClient предоставляются платно в файлах pdf или odt при запросе
через e-mail: veresov@jdesign.ru.
Проекты можно загрузить и поблагодарить:
2202 2005 9442 6213 (сбербанк)
Евгений Вересов.
15.02.2024 года.
|