Newer
Older
CasicBioRecNew / casic / ProMemory.cpp
Tan Yue on 5 Jun 2022 2 KB 20220605 虹膜注册过程优化
#include "ProMemory.h"

ProMemory::ProMemory()
{
    this->initFaceFeatures();
}

ProMemory::~ProMemory()
{

}

QVector<QVariantMap> ProMemory::getFaceFeatures()
{
    return this->faceFeatures;
}

void ProMemory::pushCasicFace(CasicFaceInfo faceInfo)
{
    QMutex mutex;
    mutex.lock();
    if (this->faceQueue.size() > 30)
    {
        QStack<CasicFaceInfo> empty;
        std::swap(empty, faceQueue);
    }

    faceQueue.push(faceInfo);
    mutex.unlock();
}

CasicFaceInfo ProMemory::popCasicFace()
{
    CasicFaceInfo result;

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

    mutex.unlock();

    return result;
}

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

    QMutex mutex;
    mutex.lock();

    size = this->faceQueue.size();

    mutex.unlock();

    return size;
}

bool ProMemory::isFaceQueueEmpty()
{
    bool empty = true;

    QMutex mutex;
    mutex.lock();

    empty = this->faceQueue.isEmpty();

    mutex.unlock();

    return empty;
}

void ProMemory::clearFaceQueue()
{
    QMutex mutex;
    mutex.lock();

    QStack<CasicFaceInfo> empty;
    std::swap(empty, faceQueue);

    mutex.unlock();
}


void ProMemory::pushCasicIris(CasicIrisInfo irisInfo)
{
    QMutex mutex;
    mutex.lock();
    if (this->irisQueue.size() > 30)
    {
        QStack<CasicIrisInfo> empty;
        std::swap(empty, irisQueue);
    }

    irisQueue.push(irisInfo);
    mutex.unlock();
}
CasicIrisInfo ProMemory::popCasicIris()
{
    CasicIrisInfo result;

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

    mutex.unlock();

    return result;
}
int ProMemory::getIrisQueueSize()
{
    int size = 0;

    QMutex mutex;
    mutex.lock();

    size = this->irisQueue.size();

    mutex.unlock();

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

    QMutex mutex;
    mutex.lock();

    empty = this->irisQueue.isEmpty();

    mutex.unlock();

    return empty;
}
void ProMemory::clearIrisQueue()
{
    QMutex mutex;
    mutex.lock();

    QStack<CasicIrisInfo> empty;
    std::swap(empty, irisQueue);

    mutex.unlock();
}

void ProMemory::initFaceFeatures()
{
    FaceDataDao faceDataDao;
    this->faceFeatures = faceDataDao.findAllRecord();
}

void ProMemory::initIrisFeatures(QString personId)
{
    irisRegistPro->sendDataToExract(QByteArray(QString("[-u]").append(personId).toLocal8Bit()));
}