Newer
Older
CasicBioRecNew / casic / ProMemory.h
#ifndef PROMEMORY_H
#define PROMEMORY_H

#include <QMutex>
#include <QStack>

#include "CasicBioRecConst.h"
#include "casic/face/CasicFaceInfo.h"
//#include "casic/iris/CasicIrisInfo.h"
#include "dao/FaceDataDao.h"
#include "dao/IrisDataDao.h"

#include "device/FaceCameraController.h"
#include "device/face/FaceDetectRegistProcess.h"
#include "device/face/FaceDetectRecogProcess.h"

class FaceCameraController;
class FaceDetectRegistProcess;
class FaceDetectRecogProcess;

class ProMemory
{
public:
    ~ProMemory();
    ProMemory(const ProMemory&)=delete;
    ProMemory& operator=(const ProMemory&)=delete;

    static ProMemory& getInstance() {
        static ProMemory instance;
        return instance;
    }

    void pushCasicFace(CasicFaceInfo faceInfo);
    CasicFaceInfo popCasicFace();

    int getFaceQueueSize();
    bool isFaceQueueEmpty();
    void clearFaceQueue();

//    void pushCasicIris(CasicIrisInfo irisInfo);
//    CasicIrisInfo popCasicIris();
    int getIrisQueueSize();
    bool isIrisQueueEmpty();
    void clearIrisQueue();

    volatile int widgeFrame = 0; // 当前显示的界面
    volatile int appState = 0; // 当前程序所处的状态
    QString capFaceOrIris; // 注册虹膜或者人脸

    void initFaceFeatures(); // 初始化人脸特征值集合
    void initIrisFeatures(); // 初始化虹膜特征值集合

    QVector<QVariantMap> getFaceFeatures();

    FaceCameraController * faceCam;
    FaceDetectRegistProcess * faceRegistPro;
    FaceDetectRecogProcess * faceRecogPro;

private:
    ProMemory();

    QStack<CasicFaceInfo> faceQueue; // 人脸信息队列
//    QStack<CasicIrisInfo> irisQueue; // 虹膜信息队列
//    QStack<CasicIrisInfo> irisLeftQueue; // 左眼信息队列
//    QStack<CasicIrisInfo> irisRightQueue; // 右眼信息队列

    QVector<QVariantMap> faceFeatures; // 人脸特征值集合
    QVector<QVariantMap> irisFeatures; // 虹膜特征值集合
};

#endif // PROMEMORY_H