Qt/C++. Real-Time Object Recognition and save their in Database.
В статье описана программа, которая принимает информацию с видеокамеры, распознает изображения в режиме реального времени,
сохраняет данные на диске и в базе данных. В качестве базы данных используется PostgreSQL. В базу данных записываются
имена распознанных объектов, вероятности их распознавания, даты и время детектирования, а также ссылки на изображения.
К перечисленным параметрам могут быть добавлены, например, значения геолокации, номера камер и другие значения, необходимые в конкретной реализации.
Но что дает применение базы данных в системе детектирования объектов? Гибкость в работе с данными. Например, можно без труда получить выборку по полям:
имя объекта && дата и время обнаружения && номер камеры. То есть можно посмотреть изображения нужных объектов во времени и по месту.
Понятно, что возможны и любые другие выборки.
Кроме описанных функций программа озвучивает (произносит имена и вероятности) найденных нейронной сетью объектов, делает снимки экранов и передает их по e-mail. Программа является развитием работы описанной ранее в статье.
При разработке программы использовались:
1. Программа выполняет следующие функции:
2. Описание работы программы.
Подключение к PostgreSQL, cоздание таблицы для хранения данных реализованы в файле main.cpp.
Здесь выполняются SQL операторы DROP TABLE и CREATE TABLE. Функция bool connectionPostgreSql(QSqlDatabase db)
выполняет подключение к базе данных.
SQL операторы INSERT INTO (запись кортежа в таблицу) выполняются в файле mainwindow.cpp в функции void MainWindow::updateTimer().
SQL операторы включены в тект C++. Вставка строки выполняеся по таймеру, частоту срабатывания которого можно изменить в тексте программы.
Но для чего нужен таймер? Дело в том, что c камеры программа считаывает 30 кадров в секунду. Записывать данные с такой частотой в базу данных нерационально.
По этой причине поток данных с камеры и поток записи в базу данных разнесены по времени и частоте. Синхранизация
между потоками выполняется с помощью семафоров. Поток данных с камеры и детектирование обьектов не сдерживаются потоком записи в базу данных.
Вывод таблицы базы данных на экран монитора реализован в файле viewtable.cpp. Пример вывода показан на рисунке 1.
Обновление таблицы происходит автоматически после
сохранения каждой новой записи (кортежа) в базе данных.
Этот пример кроме окна таблицы базы данных содержит окно диалога для выбора параметров и окно с данными, поступающими с видеокамеры.
Рис. 1
Состав сторонних (не разработанных авторами статьи) подпрограмм, а также описание ранее реализованных возможностей программы можно найти на
странице.
Полное описание программы предоставляется платно в файлах pdf или odt.
|