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/IrisCameraController.h"
#include "device/face/FaceRegistProcess.h"
#include "device/face/FaceRecogProcess.h"
#include "device/iris/IrisRegistProcess.h"
#include "device/iris/IrisRecogProcess.h"
#include "device/MotoController.h"
#include "device/CameraPositionController.h"

class FaceCameraController;
class IrisCameraController;
class FaceRegistProcess;
class FaceRecogProcess;
class IrisRegistProcess;
class IrisRecogProcess;
class MotoController;
class CameraPositionController;

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(QString personId = ""); // 初始化虹膜特征值集合

    QVector<QVariantMap> getFaceFeatures();

    FaceCameraController * faceCam;
    FaceRegistProcess * faceRegistPro;
    FaceRecogProcess * faceRecogPro;

    IrisCameraController * irisCam;
    IrisRegistProcess * irisRegistPro;
    IrisRecogProcess * irisRecogPro;

    MotoController * moto;

    CameraPositionController * camPosCtrl;

private:
    ProMemory();

    QStack<CasicFaceInfo> faceQueue; // 人脸信息队列
    QStack<CasicIrisInfo> irisQueue; // 虹膜信息队列

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

#endif // PROMEMORY_H