Newer
Older
CasicIrisIdentify / ProMemory.cpp
tanyue on 16 Dec 2023 1 KB 20231216 debug on ubuntu arm
#ifdef _MSC_VER
#pragma execution_character_set("utf-8")    // Qt VS 中文兼容(UTF-8)
#endif

#include "ProMemory.h"

ProMemory::ProMemory()
{

}

ProMemory::~ProMemory()
{

}

void ProMemory::pushCasicIris(CasicIrisInfo irisInfo)
{
    mutex.lock();
    if (this->irisQueue.size() > 10)
    {
        QStack<CasicIrisInfo> empty;
        std::swap(empty, irisQueue);
    }
    irisQueue.push(irisInfo);
    mutex.unlock();
}
CasicIrisInfo ProMemory::popCasicIris()
{
    CasicIrisInfo result;

    mutex.lock();
    if (this->irisQueue.size() > 0)
    {
        result = irisQueue.pop();
    }
    mutex.unlock();

    return result;
}

int ProMemory::getIrisQueueSize()
{
    int size = 0;

    mutex.lock();
    size = this->irisQueue.size();
    mutex.unlock();

    return size;
}
bool ProMemory::isIrisQueueEmpty()
{
    bool empty = true;

    mutex.lock();
    empty = this->irisQueue.isEmpty();
    mutex.unlock();

    return empty;
}
void ProMemory::clearIrisQueue()
{
    mutex.lock();
    QStack<CasicIrisInfo> empty;
    std::swap(empty, irisQueue);
    mutex.unlock();
}

void ProMemory::initIrisFeatures()
{
    IrisDataDao irisDao;

    QVector<QVariantMap> irisDataList = irisDao.findAllRecord();
    for (QVariantMap iris : irisDataList) {
        CasicIrisFeature featureLeft;
        featureLeft.personId = iris.value("person_id").toString();
        featureLeft.irisFeatureCode = iris.value("left_iris_code1").toByteArray();

        CasicIrisFeature featureRight;
        featureRight.personId = iris.value("person_id").toString();
        featureRight.irisFeatureCode = iris.value("right_iris_code1").toByteArray();

        irisFeatures.append(featureLeft);
        irisFeatures.append(featureRight);
    }

    LOG_INFO(QString("加载虹膜特征值数据成功 %1个[IRIS Features loaded Success]").arg(irisFeatures.size()).toStdString());
}

QVector<CasicIrisFeature> ProMemory::getIrisFeatures()
{
    return this->irisFeatures;
}