53 lines
1.3 KiB
C++
53 lines
1.3 KiB
C++
#pragma once
|
|
#include <opencv2/opencv.hpp>
|
|
#include <string>
|
|
#include <atomic>
|
|
#include <condition_variable>
|
|
#include <mutex>
|
|
#include "face_sdk.h"
|
|
|
|
class VideoProc
|
|
{
|
|
public:
|
|
static VideoProc* getInstance();
|
|
|
|
int openCam(int id);
|
|
int close();
|
|
int startCheckFace(std::string base64, int time_out);
|
|
void stopCheckFace();
|
|
void StartAutoTakePhoto(int timeOut);
|
|
void StopAutoTakePhoto();
|
|
int FaceCompare(std::string img1, std::string img2);
|
|
void TakePhoto();
|
|
void setFaceThreshold(float threshold);
|
|
|
|
private:
|
|
VideoProc();
|
|
~VideoProc();
|
|
VideoProc(VideoProc&) = delete;
|
|
VideoProc& operator=(const VideoProc&) = delete;
|
|
|
|
void onTimer();
|
|
|
|
void videoFrameThread();
|
|
void rectangleFace(cv::Mat& img, cv::Rect face_rect, cv::Scalar color);
|
|
int personCardCheck(cv::Mat& rgb_img);
|
|
std::string getFaceImg(cv::Mat& img, FaceInfo& face_info);
|
|
cv::Mat getFaceMat(cv::Mat& img, FaceInfo& face_info);
|
|
private:
|
|
std::atomic<bool> m_bRun;
|
|
std::atomic<bool> m_bTackPtoto;
|
|
std::atomic<float> m_threshold; //人脸比对阈值
|
|
std::atomic<int> m_compare_timer; //人脸验证计时,超时之后会自动停止继续比对
|
|
std::atomic<int> m_take_photo_timer; //拍照倒计时
|
|
float m_idc_feature[512];
|
|
std::string m_tackPhotoData;
|
|
std::string m_tmp_path; //缓存路径
|
|
cv::VideoCapture m_capture_rgb;
|
|
//cv::VideoCapture m_capture_ir;
|
|
|
|
std::mutex m_mt;
|
|
std::condition_variable m_cv;
|
|
};
|
|
|