banner
Qt/C++. Object Recognition and Protocol HTTP.

Напомню, что программа Object Detector распознает объекты и передает их изображения (фотографии) по протоколу FTP на Web Server. Решение этой задачи опубликовано ранее в статье. Отмечу, что изображения загружаются на веб сервер при идентификации объектов, то есть фактически в любой момент времени.
Но как увидеть загруженные изображения с любого компьютера имеющего выход в Internet? В статье предлагается простое решение этой задачи. Для иллюстрации перейдите по ссылке https://www.jdesign/photo_view.html. Вы увидите сформированую таблицу фотографий, отсортированных по дате создания. Эти фотографии загружает на сервер в автоматическом режиме программа Object Detector.
Что это за URL адрес? Это адрес скрипта на веб сервере, который динамически формирует список фотографий и передает их для отображения браузеру по протоколу HTTP.
Можно ли реализовать протокол HTTP средствами QT/C++? Конечно можно. Это сделано в проекте на основе примера. Но отображать загруженную с веб сервера HTML страницу все равно придется через запуск браузера.
Данная статья коротко описывает реализацию пересылки фотографий распознанных объектов через Web c применением инструментария: HTTP, HTML, PHP и QT/C++.
Это девятая статья из цикла "Real-Time Object Recognition". Первые восемь опубликованы здесь: 1, 2, 3, 4, 5, 6, 7 и 8.
При разработке программы использовались:
  • операционная система macOS Big Sur версия 11.6.2;
  • среда разработки Qt Creator версия 6.0.2;
  • компилятор 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. Программа 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 страницу с фотографиями распознанных объектов и сохраняет ее на локальном диске компьютера.
2. Динамическое формирование HTML страницы.
Script динамического формирования HTML сраницы реализован на языке PHP и выполняет следующие действия:
  • сканирует каталог веб сервера содержащий фотографии объектов;
  • по результату сканирования формирует массив c именами файлов и ключами в виде дат создания файлов;
  • сортирует массив по ключам;
  • динамически формирует html страницу с фотографиями, отсортированными по возрастанию даты создания.
Как синхронизированы события передачи jpg файла фотографии на сервер программой Object Detector и обновление страницы в браузере? В текущей версии PHP скрипта синхранизация выполняется по времени установкой строки <meta http-equiv="refresh" content="5"> в <head> страницы.
В целях развития проекта могут быть дописаны следующие функции:
  • авторизация для входа на Web Server;
  • группировка фото по дням или часам с формированием отдельных HTML страниц;
  • синхранизация добавления фотографий на сервер с обновлением web страницы.
Ниже показан пример сформированной страницы.
photo_list.png
Исходный PHP код предоставляется бесплатно по запросу через e-mail: veresov@jdesign.ru
Полное описание исходного текста программы Object Detector предоставляется платно в файлах pdf или odt при запросе через e-mail: veresov@jdesign.ru
Проект можно загрузить.
Евгений Вересов.
21.05.2022 года.