#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; }