banner
Qt/C++. Object Detector and iCloud, Dropbox, Google Drive. Log File.

При всем внешнем различии облачных сервисов iCloud, Dropbox, Google Drive, - есть ли в них что-то общее? Да, есть. Все сервисы имеют на локальных компьютерах папки, предназначенные для синхронизации обмена файлами и каталогами. Кроме того в оперативной памяти компьютеров "живут" демоны (daemon) и процессы, обеспечивающие связь с облачными сервисами. Взгляните, например, на программу "Мониторинг системы" в macOS. Если на компьютере установлены какие либо облачные сервисы, соответствующие процессы будут там. Ну, хорошо. А какое это имеет отношение к программе "Object Detector"? Дело в том, что программа при обнаружении объектов сохраняет их изображения (jpg files) на диске в определенной папке. Теперь предствьте, что папки синхранизации облачного сервиса и обнаруженных объектов совпадают. Что будет? Правильно! В этом случае изображения без всякого участия программы "Object Detector" будут отсылаться в системы облачного хранения данных.
Возможен вариант использования программы "Object Detector", при котором данные передаются по какому-либо протоколу (MQTT, SMTP, FTP ...) и одновременно в облачный сервис. Однако, если требуется передавать данные только в облачный сервис, например, в Dropbox, то для этого в файл CMakeList.txt введено определение переменной target_compile_definitions(ObjectsDetection PRIVATE DropBox). При наличии этого определения и выбранном пользователем CheckBox "Save to Disk" фотографии распознанных объектов будут пересылаться только в Dropbox.
В версии 1.7.5 программы "Object Detector" добавлена возможность классификации и сохранения сообщений (событий, происходящих в приложении) в файл ObjectDetectorLog.txt. Сообщения в проекте делятся на категории (QtMsgType): QtInfoMsg, QtWarningMsg, QtDebugMsg, QtCriticalMsg, QtFatalMsg. Все исходные тексты классов проекта содержат операторы вывода соответствующих сообщений. Фрагмент файла ObjectDetectorLog.txt показан на рисунке. Функция qInstallMessageHandler(messageHandler) в main.cpp определяет обработчик сообщений void messageHandler(QtMsgType type, const QMessageLogContext&, const QString& msg).
Проект может выводить сообщения и в консоль Qt Creator. Что для этого следут сделать? Немногое. Достаточно в файле проекта CMakeList.txt закоментировать строку: target_compile_definitions(ObjectsDetection PRIVATE ConsoleOrLogFile). Определение переменной ConsoleOrLogFile - это суть флаг для команды вывода сообщений в файл ObjectDetectorLog.txt. Если теперь скомпилировать и собрать проект заново, то сообщения будут выводиться в консоль Qt Creator.
В программе исправлены замеченные ошибки и недочеты.
Это двадцать третья статья из цикла "Real-Time Object Recognition". Первые двадцать две опубликованы здесь: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21 и 22.
При разработке программ использовались:
  • операционная система macOS Big Sur версия 11.7.10;
  • среда разработки Qt Creator версия 13.02;
  • программа сборки 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;
  • передает обнаруженные объекты программе QtRemoteObjectClient;
  • получает от программы QtRemoteObjectClient подтверждения (ответы) о состоянии процесса передачи объектов;
  • запускает и останавливает задачи в соответствии с датами и временем, указанными в календаре;
  • позволяет скрывать (делать не видимыми) все открытые окна в программе в автоматическом или обычном режимах,
  • ведет журнал работы программы в файле ObjectDetectorLog.txt.

2. Фрагмент файла ObjectDetectorLog.txt.
Этот файл был сформирован при включенных CheckBox: Speak, Microphone, DataBase.
Log File in Object Detector Program

3. Пакет проектов можно купить.
Пакет проектов: Object Detector version 1.7.5, iOS MQTT Client, macOS MQTT Client, Client TCP, SslWebSocketServer, SslWebSocketClient, QtRemoteObjectClient можно купить. Консультации через e-mail: veresov@jdesign.ru.
Евгений Вересов.
01.10.2024 года.