banner
Qt/C++. Распознавание объектов и создание видео клипов.

В статье обсуждается несколько вопросов, связанныех с "Real-Time Object Recognition". Первый из них - это время, затрачиваемое программой на распознавание и сохранение объектов. Предположим, что частота кадров с видекамеры (FPS - frames per second) составляет 24 - 30 единиц в секунду. Это означает, что программе Objects Detection надо успеть в течении 33 - 40 миллисекунд распознать каждый кадр и сохранить его на диске в виде изображения. Если по какой либо причине этого не происходит, то часть кадров будет потеряна. Конечно для компьютеров, имеющеих GPU(Graphics Processing Unit), уложиться в это время вполне реально, а вот для CPU возможны потери отдельных кадров.
Второй вопрос. Давайте подсчитаем, сколько кадров (один кадр - одно распознанное изображение) в идеальном случае будет сохранено программой на диске, например, за минуту? При частоте от 24 до 30 единиц, число сохраненных изображений составит от 1440 до 1800 файлов. Фактически это значение, конечно, может быть меньше по нескольким причинам. Например, из за того, что объект часть времени может отсутствовать перед камерой или некоторые кадры будут распознаны с меньшим значением определенного коэфициента вероятности. Тем не менее, вопрос состоит в нарастающих объемах изображений, которые нерационально держать в оперативной памяти. Другими словами, в программе должен быть реализован механизм постраничного отображения сохраненных на диске изображений, скажем, по несколько сотен изображений на страницу.
Как просматривать и анализировать большое колличество изображений? Простым решением может быть создание видео клипа, используя для этого, например, QuickTime Player. Это стандартный плеер для macOS, он создает клип из 1400 изображений примерно за 15 секунд. Еще минута потребуется на просмотр клипа в плеере.
Как можно запускать QuickTime Player? Player можно запускать как отдельное приложение из Launchpad или из программы Objects Detection. Большой разницы нет.
В программе Objects Detection version 1.3 введен новый режим работы "Save to Disk", при котором заданные оператором объекты распознаются и записываются на локальный диск. По сети изображениия этих объектов никуда не отсылаются. Другие выбранные типы объектов могут быть распознаны, сохранены и переданы по сети. Ниже приведен пример клипа созданного из последовательности изображений, состоящей из 1070 jpg файлов, записанных в режиме "Save to Disk". Для создания этой последовательности программе было предложено распознавать и сохранять объекты типов: Tvmonitor, Sofa, Chair.
В текущей версии программы устранены найденные ошибки.
Это пятнадцатая статья из цикла "Real-Time Object Recognition". Первые четырнадцать опубликованы здесь: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 и 14
При разработке программ использовались:
  • операционная система 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. Программа "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 для файлов, содержащих матрицы настроек;
  • выполняет операции connect/disconnect для клиентов, работающих по протоколу TCP/IP;
  • выполняет операции read/send для объектов QByteArray и QString, содержащих изображения и имена файлов изображений по протоколу TCP/IP;
  • реализует протоколы SSL и WebSocket.
  • запускает/останавливает QuickTime Player для создания видео клипов.
2. QuickTime Player в программе "Objects Detection".
Запуск/останов плеера может быть выполнен из меню "Create Movies" программы "Objects Detection 1.3". После запуска плеера для создания клипа следует перейти в меню "Файл -> Открыть последовательность изображений", затем перейти в меню "Правка -> Выбрать все" и далее "Выбрать медиафайл". QuickTime Player содаст клип с заданным именем и расширением "mov". Далее клип может быть запущен на просмотр.
Работа с плеером реализована в классе MainWindow программы "Objects Detection version 1.3" в строках 366-445. Здесь выполняется обработка основных сигналов (в терминах .NET - событий): &QProcess::started, &QProcess::finished, &QProcess::errorOccurred. По запуску плеера в качестве аргумента ему может быть передан любой файл, например : "./Movies/ObjectDetection/Start.mov".
Ниже приведен пример клипа, созданного из распознанных и сохраненных в виде последовательности файлов объектов.

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