Qt/C++. Матрица настроек в программе "Objects Detection".
Что такое матрица настроек в программе "Objects Detection" и для чего она нужна?
Чтобы понять все и сразу, взгляните на рисунок. Это изображение содержит матрицу настроек программы.
В первый слева вертикальный столбец таблицы включены имена объектов нейронной сети.
Верхняя горизонтальная строка таблицы состоит из имен Activity, реализованных в программе на настоящий момент.
Некоторые клетки на пересечении строк и столбцов содержат включенные CheckBox. Как это определяет работу программы?
Например, вторая с верху строка интерпретируется программой так: ищем объекты типа "Person".
Если найдем, то выполним следующие действия: озвучим (проговорим) имена объектов, сохраним изображения найденных
объектов в локальной базе данных, запишем все звуки, поступающие с микрофона в файл на диск.
Обратите внимание, что число возможных комбинаций (вариантов для выбора) в матрице очень велико, и будет увеливаться по мере включения новых Activity.
Это обстоятельство потребовало доработать программу с целью сохранения на диске конкретной матрицы в виде файла. По принципу одна матрица - один файл.
Другими словами, в программе реализован хорошо знакомый механизм Save As, Save, Open, Open Recent для выбранных пользователем настроек программы.
Сохранение матриц на диске позволяет, во первых, не выполнять настройку программы в ручном режиме, а загрузить файл с нужной матрицей. Во вторых, у программы появилась
(потенциальная) возможность
самой загружать файлы настроек в зависимости от того, какие объекты, когда и где она обнаружила.
Текущую версию программы "Objects Detection" определим как 1.0. При разработке были выявлены и исправлены ошибки.
Это двенадцатая статья из цикла "Real-Time Object Recognition".
Первые одиннадцать опубликованы здесь:
1,
2,
3,
4,
5,
6,
7,
8,
9,
10 и
11.
При разработке программ "Objects Detection" использовались:
1. Программа "Objects Detection" выполняет следующие функции:
2. Как реализована матрица настроек.
Матрица реализована в классе CheckBoxMap, данные в неё копируются из map<int, vector<int>>. В C++
эту структуру называют ассоциативным контейром, в Swift словарем. В контейнер данные заносятся из ComboBox и CheckBox класса SelectName или из файла
при считывании ранее сохраненной матрицы. Можно ли было реализовать ввод данных непосредственно в матрицу? Безусловно, можно. Но выбрано другое решение.
Операции: Save As, Save, Open, Open Recent реализованы в классе MainWindow, для текущей версии в строках: 407 - 678. Файлы имеют расширение setlist. Эта часть кода написана на основе примера MDI Qt/C++. Ниже показан пример матрицы настроек.
Полное описание исходного текста программ "iOS MQTT Client", "macOS MQTT Client", "Objects Detection" предоставляется платно в файлах pdf или odt при запросе
через e-mail: veresov@jdesign.ru.
|