Qt/C++. Распознавание объектов и сохранение звука.
В статье описана программа, которая принимает информацию с видеокамеры и микрофона, распознает изображения в режиме реального времени,
сохраняет видео данные на диске и в базе данных как jpg файлы, сохраняет звук на диске в виде wav файлов. Включение сохранения звука происходит по команде из нейронной сети.
Например, если пользователь определит в настройках программы, что включить запись звука с микрофона следует при появлении на видео изображения человека или собаки, то нейронная сеть
при распознании этих объектов, выдаст команду на создание звукового файла и записи звука на диск. Как долго будет продолжаться процесс сохранения звука?
До тех пор, пока нейронная сеть не потеряет эти объекты или пользователь не отключит Сheck Box сохранения звука для этих объектов.
Это третья статья из цикла "Real-time object recognition". Первые две статьи обубликованы
ранее здесь и здесь.
В этой версии программы кроме новой функциональности
изменены методы сохранения видео данных в режиме мульти-выбора объектов. Теперь пользователь может выбрать любое количество объектов и
любое количество действий (activity) для них.
При разработке программы использовались:
1. Программа выполняет следующие функции:
2. Запись звука с микрофона на диск.
Стартует запись звука на диск по команде из нейронной сети в функции
void MainWindow::updateTimer(). Сама нейронная сеть работает в отдельном потоке.
Что выполняет эта функция? В ней устанавливаются настройки объекта класса QAudioEncoderSettings такие, как число каналов входа (Channel Count),
качество кодирования (QMultimedia::EncodingQuality) и другие необходимые параметры. Затем выдается команда на запись звука.
Какое колличество входных каналов может быть
задействовано? Любое разумное. Для этого необходимо, чтобы в наличии было соответствующее оборудование, и эту программу потребуется модифицировать.
Что происходит, если нейронная сеть теряет заданные пользователем объекты? В этом случае программа продолжит запись в течение некоторого времени (5 секунд),
а затем остановит запись. Если нейронная сеть позже обнаружит указанные пользователем объекты, она вновь инициирует запись, но это
будет уже файл с другим именем. Имя файла формируется автоматически и включает в себя дату и время с точностью до милисекунд.
Для отображения уровня сигнала, поступающего на микрофон, используется специальный индикатор, который помещен в StatusBar приложения и который включается
автоматически при распознавании нейронной сетью заданных объектов. Индикатор выполнен в виде отдельного класса AudioLevel взятого автором
статьи отсюда без существенных модификаций.
Пример работы индикатора показан на рисунке 1.
Рис. 1
Полное описание программы предоставляется платно в файлах pdf или odt.
|