68 lines
1.5 KiB
C
68 lines
1.5 KiB
C
|
|
#pragma once
|
|||
|
|
|
|||
|
|
#include <vector>
|
|||
|
|
#include <string>
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>ļ<EFBFBD><C4BC>б<EFBFBD>¶<EFBFBD><C2B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD> OpenCV ͷ<><CDB7>ʹ<EFBFBD><CAB9>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
namespace cv {
|
|||
|
|
class Mat;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// SDK ״̬<D7B4><CCAC>
|
|||
|
|
enum class SDKStatus {
|
|||
|
|
SUCCESS = 0,
|
|||
|
|
MODEL_LOAD_ERROR = -1,
|
|||
|
|
EXTRACTION_ERROR = -2,
|
|||
|
|
NO_FACE_DETECTED = -3,
|
|||
|
|
POOR_QUALITY = -4,
|
|||
|
|
INVALID_INPUT = -5
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
|
|||
|
|
struct FeatureResult {
|
|||
|
|
SDKStatus status;
|
|||
|
|
std::vector<float> feature; // 512ά<32><CEAC><EFBFBD><EFBFBD>
|
|||
|
|
std::string error_message;
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD>ۼܹ<DBBC><DCB9><EFBFBD><EFBFBD>ġ<EFBFBD>
|
|||
|
|
// FaceSDK <20>࣬<EFBFBD>ṩ<EFBFBD><E1B9A9> C++ <20><><EFBFBD><EFBFBD>
|
|||
|
|
class FaceSDK {
|
|||
|
|
public:
|
|||
|
|
/**
|
|||
|
|
* @brief <EFBFBD><EFBFBD><EFBFBD>캯<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>SDK<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD>
|
|||
|
|
* @param model_dir <EFBFBD><EFBFBD><EFBFBD><EFBFBD>7<EFBFBD><EFBFBD>onnx<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>Ŀ¼·<EFBFBD><EFBFBD>
|
|||
|
|
*/
|
|||
|
|
FaceSDK(const std::string& model_dir);
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><EFBFBD><EFBFBD>Դ
|
|||
|
|
*/
|
|||
|
|
~FaceSDK();
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @brief <EFBFBD>ӿ<EFBFBD>1<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡͼƬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
|||
|
|
* @param image <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD> (OpenCV Mat, BGR <EFBFBD><EFBFBD>ʽ)
|
|||
|
|
* @return FeatureResult <EFBFBD>ṹ<EFBFBD>壬<EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
*/
|
|||
|
|
FeatureResult extractFeature(const cv::Mat& image);
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @brief <EFBFBD>ӿ<EFBFBD>2<EFBFBD><EFBFBD><EFBFBD>Ƚ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ (<EFBFBD><EFBFBD>̬<EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
|||
|
|
* @param feature1 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1
|
|||
|
|
* @param feature2 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2
|
|||
|
|
* @return <EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD> (0.0 ~ 1.0)<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD>
|
|||
|
|
*/
|
|||
|
|
static float compareFeatures(const std::vector<float>& feature1,
|
|||
|
|
const std::vector<float>& feature2);
|
|||
|
|
|
|||
|
|
private:
|
|||
|
|
// PImpl ģʽ (Pointer to Implementation)
|
|||
|
|
// <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD> C++ <20><><EFBFBD>ɣ<EFBFBD><C9A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD>ʵ<EFBFBD><CAB5>ϸ<EFBFBD><CFB8>
|
|||
|
|
// (<28><> FacePipeline, ONNX Runtime, OpenCV <20>ij<EFBFBD>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD>)<29><>
|
|||
|
|
// ʹ<><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>ļ<EFBFBD><C4BC>dz<EFBFBD><C7B3>ɾ<EFBFBD><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ұ<EFBFBD><D2B1><EFBFBD><EFBFBD>ٶȸ<D9B6><C8B8>졣
|
|||
|
|
class Impl;
|
|||
|
|
Impl* p_impl;
|
|||
|
|
};
|
|||
|
|
|