Qt/C++. Object Detector and iCloud, Dropbox, Google Drive. Log File.
При всем внешнем различии облачных сервисов iCloud, Dropbox, Google Drive, - есть ли в них что-то общее? Да, есть.
Все сервисы имеют на локальных компьютерах папки, предназначенные для синхронизации обмена файлами и каталогами.
Кроме того в оперативной памяти компьютеров "живут" демоны (daemon) и процессы, обеспечивающие связь с облачными сервисами.
Взгляните, например, на программу "Мониторинг системы" в macOS. Если на компьютере установлены какие либо облачные сервисы, соответствующие процессы будут там.
Ну, хорошо. А какое это имеет отношение к программе "Object Detector"? Дело в том, что программа при обнаружении объектов сохраняет их изображения
(jpg files)
на диске в определенной папке. Теперь предствьте, что папки синхранизации облачного сервиса и обнаруженных объектов совпадают. Что будет?
Правильно! В этом случае изображения без всякого участия программы "Object Detector" будут отсылаться в системы облачного хранения данных.
Возможен вариант использования программы "Object Detector", при котором данные передаются по какому-либо протоколу (MQTT, SMTP, FTP ...) и одновременно в облачный сервис.
Однако, если требуется передавать данные только в облачный сервис, например, в Dropbox, то для этого в файл CMakeList.txt введено определение переменной target_compile_definitions(ObjectsDetection PRIVATE DropBox).
При наличии этого определения и выбранном пользователем CheckBox "Save to Disk" фотографии распознанных объектов будут пересылаться только в Dropbox.
В версии 1.7.5 программы "Object Detector" добавлена возможность классификации и сохранения сообщений (событий, происходящих в приложении) в файл ObjectDetectorLog.txt.
Сообщения в проекте делятся на категории (QtMsgType): QtInfoMsg, QtWarningMsg, QtDebugMsg, QtCriticalMsg, QtFatalMsg.
Все исходные тексты классов проекта содержат операторы вывода соответствующих сообщений.
Фрагмент файла ObjectDetectorLog.txt показан на рисунке.
Функция qInstallMessageHandler(messageHandler) в main.cpp определяет обработчик сообщений
void messageHandler(QtMsgType type, const QMessageLogContext&, const QString& msg).
Проект может выводить сообщения и в консоль Qt Creator. Что для этого следут сделать? Немногое.
Достаточно в файле проекта CMakeList.txt закоментировать строку:
target_compile_definitions(ObjectsDetection PRIVATE ConsoleOrLogFile).
Определение переменной ConsoleOrLogFile - это суть флаг для команды вывода сообщений в файл ObjectDetectorLog.txt.
Если теперь скомпилировать и собрать проект заново, то сообщения будут выводиться в консоль Qt Creator.
В программе исправлены замеченные ошибки и недочеты.
Это двадцать третья статья из цикла "Real-Time Object Recognition".
Первые двадцать две опубликованы здесь:
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21 и
22.
При разработке программ использовались:
1. Программа Object Detector выполняет следующие функции:
2. Фрагмент файла ObjectDetectorLog.txt.
Этот файл был сформирован при включенных CheckBox: Speak, Microphone, DataBase.
3. Пакет проектов можно купить.
Пакет проектов: Object Detector version 1.7.5, iOS MQTT Client, macOS MQTT Client, Client TCP,
SslWebSocketServer, SslWebSocketClient, QtRemoteObjectClient можно купить.
Консультации через e-mail: veresov@jdesign.ru.
|