FaceRecog/include/face_sdk.h

66 lines
1.6 KiB
C
Raw Normal View History

2025-10-30 18:37:30 +08:00
#pragma once
#include <vector>
#include <string>
2025-10-31 10:14:51 +08:00
#include "opencv2/opencv.hpp" // 我们在接口中需要 cv::Mat
2025-10-30 18:37:30 +08:00
2025-10-31 10:14:51 +08:00
// 定义 SDK 状态码
2025-10-30 18:37:30 +08:00
enum class SDKStatus {
SUCCESS = 0,
2025-10-31 10:14:51 +08:00
MODEL_LOAD_ERROR = -1, // 模型加载失败
PIPELINE_ERROR = -2, // 管线(算法)执行失败
INVALID_INPUT = -3, // 无效输入(如空图像)
NOT_INITIALIZED = -4 // SDK 未初始化
2025-10-30 18:37:30 +08:00
};
2025-10-31 10:14:51 +08:00
// 特征提取的结果结构体
struct SDKExtractResult {
2025-10-30 18:37:30 +08:00
SDKStatus status;
2025-10-31 10:14:51 +08:00
std::vector<float> feature;
std::string message;
2025-10-30 18:37:30 +08:00
};
2025-10-31 10:14:51 +08:00
/**
* @class FaceSDK
* @brief FacePipeline C++ API (使 Pimpl )
* * JNI
*/
2025-10-30 18:37:30 +08:00
class FaceSDK {
public:
/**
2025-10-31 10:14:51 +08:00
* @brief
* @param model_dir .onnx
2025-10-30 18:37:30 +08:00
*/
FaceSDK(const std::string& model_dir);
/**
2025-10-31 10:14:51 +08:00
* @brief
2025-10-30 18:37:30 +08:00
*/
~FaceSDK();
/**
2025-10-31 10:14:51 +08:00
* @brief SDK
*/
bool IsInitialized() const;
/**
* @brief
* @param image BGR cv::Mat
* @return SDKExtractResult
2025-10-30 18:37:30 +08:00
*/
2025-10-31 10:14:51 +08:00
SDKExtractResult ExtractFeature(const cv::Mat& image);
2025-10-30 18:37:30 +08:00
/**
2025-10-31 10:14:51 +08:00
* @brief
* @param feat1 1
* @param feat2 2
* @return
2025-10-30 18:37:30 +08:00
*/
2025-10-31 10:14:51 +08:00
float Compare(const std::vector<float>& feat1, const std::vector<float>& feat2);
2025-10-30 18:37:30 +08:00
private:
2025-10-31 10:14:51 +08:00
// Pimpl (Private Implementation)
// "Impl" 是一个前向声明的私有类
2025-10-30 18:37:30 +08:00
class Impl;
2025-10-31 10:14:51 +08:00
std::unique_ptr<Impl> m_impl;
};