Qt/C++. Object Recognition and Inter-Process Communication (IPC).
Статья продожает тему Object Recognition средствами Qt/C++ и Open/CV.
Здесь описан пример межпроцессного взаимодействия с использованием классов QLocalServer и QLocalSocket.
Изначально задача состояла в том, чтобы передавать на удаленный сервер изображения заданных пользователем классов и
обнаруживаемых нейронной сетью в потоке данных, поступающих с камеры.
При этом, было желательно, чтобы сама передача изображений с помощью протокола FTP, была выделена в отдельный подпроцесс.
Создаваемые сокетами дочерние процессы будут потомками основного процесса приложения ObjectsDetection.
При рассмотрении вариантов реализации этой задачи были выбраны классы QLocalServer и QLocalSocket. Эти классы
имеют простой алгоритм взаимодействия как между собой, так и с вызывающим их приложением.
Clent FTP реализован с использованием класса QNetworkAccessManager
и помещен в обьект класса QLocalServer. Взаимодействие основного приложения с клиентом FTP выполняется через объект класса
QLocalSocket.
Обратите внимание!
Первая редакция приложения действительно содержала использование
протоколов IPC и FTP. Однако в более поздней редакции FTP реализован без использования IPC.
Cтатья оставлена как есть, без переделок.
Это четвертая статья из цикла "Real-Time Object Recognition". Первые три статьи обубликованы
ранее здесь, здесь и
здесь.
При разработке программы использовались:
1. Программа выполняет следующие функции:
2. Передача файлов изображений по протоколу FTP.
Для передачи по протоколу FTP изображений, обнаруживаемых нейронной сетью, следует
установить имена нужных вам классов в comboBox (функция void SelectName::on_comboBox_activated(int index))
и выбрать checkBoxFtp (форма SelectName). В этом случае все заданные пользователем и обнаруживаемые нейронной сетью изображения
объектов будут в автоматическом режиме (без участия человека) передаваться на удаленный сервер. Имя сервера можно определить в функции
void FtpServer::sendFileFtp(QString fileName).
Вот краткий перечень функций для FTP:
Строго говоря, это не полный перечень.
Дело в том, что существует определенный алгоритм начального взаимодействия QLocalServer и QLocalSocket. Объекты
этих классов дожны предварительно настроиться на взимную работу. Описан этот процесс в комментариях к файлам ftpclient.cpp и
ftpserver.cpp. Пример работы программы показан на рис. 1.
Рис. 1
Полное описание программы предоставляется платно в файлах pdf или odt.
|