56 lines
1.1 KiB
C++
56 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;
|
|
|
|
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
|