#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) { QMutex mutex; mutex.lock(); if (this->irisQueue.size() > 10) { 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::initIrisFeatures() { IrisDataDao irisDao; /* CasicIrisFeature leftFeature; leftFeature.irisId = 1; leftFeature.personId = "11left"; leftFeature.irisCode = cv::imread("d:\\irisLogs\\photo\\left-code.bmp", 0); leftFeature.maskNorm = cv::imread("d:\\irisLogs\\photo\\left-mask.bmp", 0); CasicIrisInfo irisInfo; irisInfo.irisCode = leftFeature.irisCode; irisInfo.maskNorm = leftFeature.maskNorm; leftFeature.irisFeatureCode = casic::iris::CasicIrisInterface::getInstance().extractFeature(irisInfo); CasicIrisFeature rightFeature; rightFeature.irisId = 2; rightFeature.personId = "11right"; rightFeature.irisCode = cv::imread("d:\\irisLogs\\photo\\right-code.bmp", 0); rightFeature.maskNorm = cv::imread("d:\\irisLogs\\photo\\right-mask.bmp", 0); CasicIrisInfo irisInfo2; irisInfo2.irisCode = rightFeature.irisCode; irisInfo2.maskNorm = rightFeature.maskNorm; rightFeature.irisFeatureCode = casic::iris::CasicIrisInterface::getInstance().extractFeature(irisInfo2); this->irisFeatures.append(leftFeature); this->irisFeatures.append(rightFeature); QVariantMap obj; obj.insert("person_id", "12097912071815954432"); obj.insert("left_iris_code1", leftFeature.irisFeatureCode); obj.insert("right_iris_code1", rightFeature.irisFeatureCode); irisDao.save(obj); */ 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; }