Qt/C++. Распознавание объектов и сохранение видео.
В текущей версии (1.6) программы Object Detector реализована функция сохранения в файлах на диске видео сигнала, поступающего с камеры. Предлагаются два режима сохранения.
В первом режиме запись на диск начинается при распознавании программой заданных пользователем объектов.
Например, если пользователь решил, что сохранение должно начинаться при обнаружении объектов: человек, кошка, автобус,
то при распознавании программой этих обьектов по отдельности или вместе, запускается подпрограмма сохранение видео.
Что произойдет если из поля зрения камеры уйдет автобус, а остальные объекты останутся? Ничего не произойдет, запись продолжится.
А что будет, если все заданные пользователем объекты исчезнут?
В этом случае программа продолжит сохранение видео в течении 10 секунд и затем прекратит запись.
Ну хорошо, а что, если любой из этих объектов вновь появится перед камерой через какое-то время? Программа вновь начнет запись видео, но уже в новый файл. Так работает алгоритм первого режима.
Второй алгоритм работы программы более прост. Пользователь может запустить/остановить сохранение видео в любой момент времени без распознавания обьектов.
Это просто режим сохранения видео в файл.
Однако может возникнуть вопрос. А есть ли возможность параллельно запустить процесс распознавания объектов, скажем, для передачи фотографий распознанных
объектов по какому-либо из реализованных в программе протоколов: FTP,TCP,SMTP, ... ? Да, есть. Программа будет писать видео в файл, одновременно распознавать объекты
и рассылать jpg файлы по заданному протоколу или, например, генерировать звук.
Напомню, что программа имеет функцию сохранения речи в звуковых файлах на диске. Можно ли объединить видео и звук в единый мультимедиа файл?
Да, можно. Правда, для этого надо воспользоваться сторонней программой, например, FFmpeg.
Было бы хорошим решением создавать мультимеда файлы в тексте С++ программы Object Detector, предварительно скомпилировав библиотеку OpenCV с ключом FFMPEG.
Но при компиляции OpenCV версий 4.5 - 4.7 с ключом FFMPEG у меня (и возможно не уменя одного) генерируется исключение.
Это восемнадцатая статья из цикла "Real-Time Object Recognition".
Первые семнадцать опубликованы здесь:
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16 и
17.
При разработке программ использовались:
1. Программа Object Detector выполняет следующие функции:
2. Сохранение видео в файлах формата avi.
Первый режим сохранения видео начинается при нажатии на кнопку "Start", при этом последует вызов функции void SelectName::startButton_clicked().
Затем последовательно вызывается множество других функций из классов: MainWindow, NewThread. Отмечу, что в программе используется несколько потоков и таймеров.
Алгоритм может показаться не простым.
Второй режим стартует при выборе пункта меню "Start Video Saving", при этом последует вызов функции void startVideoSaving(). В этом режиме алгоритм записи видео более прост.
Однако в программе предусмотрена возможность одновременно с записью видео в файл, запуск и выполнение множества других действий, как то: cохранение звука,
сохранение фотографий, отсылка jpg файлов по сети, "проговариваение увиденного".
3. Описание исходных текстов.
Полное описание исходных текстов проектов: Object Detector version 1.6, iOS MQTT Client, macOS MQTT Client, Client TCP, SslWebSocketServer, SslWebSocketClient предоставляются платно в файлах pdf или odt при запросе
через e-mail: veresov@jdesign.ru.
|