Files
DeepCamFaceSDK2.0/Inc/LivenessIRDnn.h
2024-12-13 23:33:37 +08:00

40 lines
1.1 KiB
C++

#pragma once
#include <opencv2/opencv.hpp>
#include <Inc/CenterFaceMnn.h>
//enum error {
// DEEPCAM_UNKNOWN_ERROR = -2, // UNKNOWN ERROR
// DEEPCAM_IMAGE_INVALID = -1,
// DEEPCAM_NO_ERROR = 0, // NO ERROR
//};
class LivenessIRDnn
{
public:
static LivenessIRDnn* GetInstance();
int LivenessDetect(const cv::Mat& img, FaceInfo& face_info, float& score, bool motionFilter, int uniteFrames = 5);
int LivenessDetect(const cv::Mat& img, int face_x1, int face_y1, int face_x2, int face_y2, const float* landmark, float& score, bool motionFilter, int uniteFrames = 5);
private:
LivenessIRDnn();
~LivenessIRDnn();
cv::Mat GetFace(const cv::Mat &src, const float* landmark);
cv::Mat FaceAlign(const cv::Mat& frame, const float* landmark, float face_rate = 1.25f);
float IOU(float face0_x0, float face0_y0, float face0_x1, float face0_y1,
float face1_x0, float face1_y0, float face1_x1, float face1_y1);
int GetLightBlurScore(const cv::Mat& face, float& light, float& blur);
int GetLivenessScore(const cv::Mat& face_img, float& score);
long long get_cur_time();
private:
static LivenessIRDnn* m_instance;
cv::dnn::Net m_net;
};