diff --git a/app/br-enroll/br-enroll.cpp b/app/br-enroll/br-enroll.cpp index 882587e..89bf072 100644 --- a/app/br-enroll/br-enroll.cpp +++ b/app/br-enroll/br-enroll.cpp @@ -52,9 +52,31 @@ static void enroll_utemplate(br_const_utemplate utemplate, br_callback_context) foreach (const Template &t, templates) { const Mat &m = t.m(); - const uint32_t size = m.rows * m.cols * m.elemSize(); - const QByteArray templateID = QCryptographicHash::hash(QByteArray((const char*) m.data, size), QCryptographicHash::Md5); - br_append_utemplate_contents(stdout, utemplate->imageID, (const unsigned char*) templateID.data(), -1, size, m.data); + QByteArray data((const char*) m.data, m.rows * m.cols * m.elemSize()); + + const QRectF frontalFace = t.file.get("FrontalFace"); + const QPointF firstEye = t.file.get("First_Eye"); + const QPointF secondEye = t.file.get("Second_Eye"); + const float x = frontalFace.x(); + const float y = frontalFace.y(); + const float width = frontalFace.width(); + const float height = frontalFace.height(); + const float rightEyeX = firstEye.x(); + const float rightEyeY = firstEye.y(); + const float leftEyeX = secondEye.x(); + const float leftEyeY = secondEye.y(); + + data.append((const char*)&x , sizeof(float)); + data.append((const char*)&y , sizeof(float)); + data.append((const char*)&width , sizeof(float)); + data.append((const char*)&height , sizeof(float)); + data.append((const char*)&rightEyeX, sizeof(float)); + data.append((const char*)&rightEyeY, sizeof(float)); + data.append((const char*)&leftEyeX , sizeof(float)); + data.append((const char*)&leftEyeY , sizeof(float)); + + const QByteArray templateID = QCryptographicHash::hash(data, QCryptographicHash::Md5); + br_append_utemplate_contents(stdout, utemplate->imageID, (const unsigned char*) templateID.data(), -1, data.size(), (const unsigned char*) data.data()); } } diff --git a/app/br-search/br-search.cpp b/app/br-search/br-search.cpp index d14b3cf..5ea88b8 100644 --- a/app/br-search/br-search.cpp +++ b/app/br-search/br-search.cpp @@ -131,6 +131,19 @@ struct FaceRecognition : public SearchResults { return algorithm->compare(target->data, query->data, 768); } + + void printMetadata(br_const_utemplate t) const + { + const float *metadata = reinterpret_cast(&t->data[768]); + cout << ", \"X\":" << metadata[0] + << ", \"Y\":" << metadata[1] + << ", \"Width\":" << metadata[2] + << ", \"Height\":" << metadata[3] + << ", \"RightEyeX\":" << metadata[4] + << ", \"RightEyeY\":" << metadata[5] + << ", \"LeftEyeX\":" << metadata[6] + << ", \"LeftEyeY\":" << metadata[7]; + } }; struct MappedGallery