Newer
Older
CasicIrisIdentify / device / iris / CasicIrisRecState.h
#ifndef CASICIRISRECSTATE_H
#define CASICIRISRECSTATE_H

#include <QDateTime>
#include <QJsonObject>
#include <QJsonArray>
#include <QJsonDocument>

#include "casic/iris/CasicIrisInfo.h"
#include "utils/UtilInclude.h"

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

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

    void initRecognize();
    void restRecognize();
    QString toString();
    QJsonObject toJSON();

    QString recoginzeId; // 识别过程id
    qint64 timeStamp = 0; // 识别开始时间戳
    qint64 timeStampSucc = 0; // 识别成功时的时间戳
    qint64 findEyeTmLast = 0; // 找眼操作耗时
    qint64 segmentTmLast = 0; // 图像分割操作耗时
    qint64 extractTmLast = 0; // 编码操作耗时
    qint64 matchTmLast = 0; // 匹配操作耗时

    float score = 0.0f; // 匹配评分

    CasicIrisInfo * irisInfo;

    QString matchedId;

    qint8 tryCount = 0; // 识别尝试次数
    qint16 noEyeCount = 0; // 连续没有找到眼睛次数
    qint16 recogTimeLast = 0.0; // 识别成功耗时ms

    /**
     * @brief state
     * 0=初始值
     * 1=左眼检测
     * 2=右眼检测
     * 3=质量评估
     * 4=特征值提取
     * 5=虹膜库比对成功
     * 6=虹膜库比对失败
     */
    volatile int state;

    enum IrisRecStateName
    {
        REC_NOT_START = 0,       // 未开始
        REC_FIND_EYE = 3, // 找到左眼和右眼
        REC_FEATURE_EXTRACT = 4,  // 特征值提取成功
        REC_SEARCH_SUCC = 5, // 虹膜库比对成功
        REC_SEARCH_FAIL = 6 // 虹膜库比对失败
    };

private:
    CasicIrisRecState();

};

#endif // CASICIRISRECSTATE_H