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