Skip to content

Commit a5cd44a

Browse files
committed
Server: use data structure to contain object recognition results
1 parent 6bfc3cc commit a5cd44a

File tree

6 files changed

+25
-10
lines changed

6 files changed

+25
-10
lines changed

server/source/Client/Client.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,8 @@ Client::Client(QObject *parent, QWebSocket* _socket, QSettings* config)
4141
socket(_socket)
4242
{
4343
qRegisterMetaType<QVector<QPair<QRect, QString>>>();
44+
qRegisterMetaType<QVector<QPair<float,QString>>>();
45+
4446
qRegisterMetaType<Client::Command>();
4547

4648
worker = new ClientWorker(nullptr, config, &settings);
@@ -184,7 +186,7 @@ void Client::processDlibWorkerFaceResults(const QVector<QPair<QRect, QString>>&
184186
}
185187
}
186188

187-
void Client::processDlibWorkerObjectResults(const QStringList &results)
189+
void Client::processDlibWorkerObjectResults(const QVector<QPair<float, QString> > &results)
188190
{
189191
if (results.isEmpty())
190192
return;
@@ -206,7 +208,7 @@ void Client::processDlibWorkerObjectResults(const QStringList &results)
206208
font.setPointSize(12);
207209
paint.setFont(font);
208210

209-
const QString& str = it;
211+
const QString& str = QString("%1: %2").arg(it.first).arg(it.second);
210212

211213
QFontMetrics fMetrics(paint.font());
212214
QRect textRect(20, 20 + fMetrics.size(Qt::TextSingleLine, str).height() * counter, fMetrics.size(Qt::TextSingleLine, str).width(), fMetrics.size(Qt::TextSingleLine, str).height());

server/source/Client/Client.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ public slots:
106106

107107
private slots:
108108
void processDlibWorkerFaceResults(const QVector<QPair<QRect, QString>>& results);
109-
void processDlibWorkerObjectResults(const QStringList& results);
109+
void processDlibWorkerObjectResults(const QVector<QPair<float, QString>>& results);
110110

111111
public:
112112
signals:

server/source/Client/ClientWorker.cpp

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -80,14 +80,27 @@ void ClientWorker::processDlibWorkerFaceResults(const QVector<QPair<QRect, QStri
8080
}
8181
}
8282

83-
void ClientWorker::processDlibWorkerObjectResults(const QStringList &results)
83+
void ClientWorker::processDlibWorkerObjectResults(const QVector<QPair<float, QString>> &results)
8484
{
8585
if (results.isEmpty())
8686
return;
8787

88-
log("DLIB has found objects: " + results.join(", "));
88+
QStringList strList;
89+
QVariantList list;
90+
for (const auto& i : results)
91+
{
92+
QVariantHash hash;
93+
94+
hash["prediction"] = i.first;
95+
hash["label"] = i.second;
96+
97+
strList.push_back(QString("%1: %2").arg(i.first).arg(i.second));
98+
list.push_back(hash);
99+
}
100+
101+
log("DLIB has found objects: " + strList.join(","));
89102
log("Sending found object properties to the client.");
90-
sendCommand(Command::MESSAGE_TAG_OBJECT, results);
103+
sendCommand(Command::MESSAGE_TAG_OBJECT, list);
91104
}
92105

93106
void ClientWorker::processTextMessage(const QString &message)

server/source/Client/ClientWorker.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ class ClientWorker : public QObject
6363

6464
private slots:
6565
void processDlibWorkerFaceResults(const QVector<QPair<QRect, QString>>& results);
66-
void processDlibWorkerObjectResults(const QStringList& results);
66+
void processDlibWorkerObjectResults(const const QVector<QPair<float, QString>> &results);
6767

6868
void processTextMessage(const QString& message);
6969
void processBinaryMessage(const QByteArray& data);

server/source/DLIBWorker/DLIBWorker.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -388,12 +388,12 @@ void DLIBWorker::process(const QByteArray& buffer)
388388

389389
matrix<float,1,1000> p = sum_rows(mat(snet(images.begin(), images.end()))) / m_numCrops;
390390

391-
QStringList result;
391+
QVector<QPair<float, QString>> result;
392392

393393
for (size_t k = 0; k < m_settings->labelCount; ++k)
394394
{
395395
unsigned long predicted_label = index_of_max(p);
396-
result.append(QString::number(p(predicted_label)) + ": " + QString::fromStdString(labels[predicted_label]));
396+
result.append( { p(predicted_label), QString::fromStdString(labels[predicted_label]) } );
397397
p(predicted_label) = 0;
398398
}
399399

server/source/DLIBWorker/DLIBWorker.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@ public slots:
143143
public:
144144
signals:
145145
void doneFace(const QVector<QPair<QRect, QString>>& results);
146-
void doneObject(const QStringList& results);
146+
void doneObject(const QVector<QPair<float, QString>>& results);
147147

148148
void log(const QString& str);
149149
};

0 commit comments

Comments
 (0)