OrangePi3588Media/include/face/face_result.h

58 lines
1.1 KiB
C++

#pragma once
#include <array>
#include <cstdint>
#include <string>
#include <vector>
#include "frame/frame.h"
namespace rk3588 {
struct Point2f {
float x = 0.0f;
float y = 0.0f;
};
struct FaceDetItem {
Rect bbox{}; // x,y,w,h in image coordinates
float score = 0.0f;
bool has_landmarks = false;
std::array<Point2f, 5> landmarks{}; // left_eye, right_eye, nose, left_mouth, right_mouth
int track_id = -1;
};
struct FaceDetResult {
std::vector<FaceDetItem> faces;
int img_w = 0;
int img_h = 0;
std::string model_name;
};
struct FaceRecogItem {
Rect bbox{};
int best_person_id = -1;
std::string best_name;
float best_sim = 0.0f;
bool unknown = true;
float second_sim = 0.0f;
int candidate_person_id = -1;
std::string candidate_name;
bool has_landmarks = false;
std::array<Point2f, 5> landmarks{};
// Optional; filled only when emit_embedding=true.
std::vector<float> embedding;
};
struct FaceRecogResult {
std::vector<FaceRecogItem> items;
int img_w = 0;
int img_h = 0;
std::string model_name;
};
} // namespace rk3588