Newer
Older
AppendIrisCodeUtils / casic / iris / CasicIrisInterface.h
#ifndef CASICIRISINTERFACE_H
#define CASICIRISINTERFACE_H

#include "CasicIrisInfo.h"
#include "CasicSegPostProcess.h"
#include "CasicIrisUtil.h"
#include "CasicIrisRec.h"
#include "utils/UtilInclude.h"

namespace casic {
    namespace iris {
        class CasicIrisInterface
        {
        public:
            ~CasicIrisInterface();
            CasicIrisInterface(const CasicIrisInterface&)=delete;
            CasicIrisInterface& operator=(const CasicIrisInterface&)=delete;

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

            CasicIrisInfo findEye(CasicIrisInfo irisInfo);
            CasicIrisInfo findAndCutEye(CasicIrisInfo irisInfo);
            CasicIrisInfo irisQualityAssess(CasicIrisInfo irisInfo);
            CasicIrisInfo irisCodeExtract(CasicIrisInfo irisInfo);

            CasicIrisInfo irisEncode(CasicIrisInfo irisInfo);
            QByteArray extractFeature(CasicIrisInfo irisInfo);
            float calculateMatchScore(CasicIrisFeature feature, CasicIrisInfo irisInfo);
            float calculatePairPoints(QByteArray feature, QByteArray other);

            void setCascadeFile(QString filename);
            void setMinEyeSize(int minEyeSize);
            void setMaxEyeSize(int maxEyeSize);

        private:
            CasicIrisInterface();

            std::string cascadeName = "./model/haarcascade_eye.xml";
            const char * gaborFilterFileName = "./model/filters.txt";
            const char * applicationPointsFileName = "./model/points.txt";
            int minEyeSize = 320;
            int maxEyeSize = 480;
            float cutRatio = 0.72f; // 裁剪比率 用于裁剪更大比例的眼部图像

            cv::CascadeClassifier * cascade;
            iristrt::CasicIrisRec rec;
        };
    }
}


#endif // CASICIRISINTERFACE_H