#pragma once #include #include #include #include #include #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 m_bRun; std::atomic m_bTackPtoto; std::atomic m_threshold; //人脸比对阈值 std::atomic m_compare_timer; //人脸验证计时,超时之后会自动停止继续比对 std::atomic 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; };