#include "TrainStep1DataReadEngine.h" using namespace ai_matrix; TrainStep1DataReadEngine::TrainStep1DataReadEngine() {} TrainStep1DataReadEngine::~TrainStep1DataReadEngine() {} APP_ERROR TrainStep1DataReadEngine::Init() { strPort0_ = engineName_ + "_" + std::to_string(engineId_) + "_0"; strPort1_ = engineName_ + "_" + std::to_string(engineId_) + "_1"; strPort2_ = engineName_ + "_" + std::to_string(engineId_) + "_2"; this->baseConfig_ = Config::getins()->getBaseConfig(); LogInfo << "TrainStep1DataReadEngine Init ok"; return APP_ERR_OK; } APP_ERROR TrainStep1DataReadEngine::DeInit() { LogInfo << "TrainStep1DataReadEngine DeInit ok"; return APP_ERR_OK; } bool TrainStep1DataReadEngine::readJson(std::string &strFilePath, Json::Value &jvInfo, int i) { i--; if (access(strFilePath.c_str(), F_OK) != 0) { LogWarn << "文件:" << strFilePath << " 不存在"; return i > 0 ? this->readJson(strFilePath, jvInfo, i) : false; } if (!FileUtil::getins()->readJsonInfo(jvInfo, strFilePath)) { LogError << "读取json文件失败:" << strFilePath; return i > 0 ? this->readJson(strFilePath, jvInfo, i) : false; } return true; } APP_ERROR TrainStep1DataReadEngine::Process() { int iRet = APP_ERR_OK; //return APP_ERR_OK; while (!isStop_) { //获取主摄像头检测的状态 std::shared_ptr pVoidData0 = nullptr; iRet = inputQueMap_[strPort0_]->pop(pVoidData0); if (nullptr == pVoidData0) { usleep(1000); continue; } std::shared_ptr pStep1Data = std::static_pointer_cast(pVoidData0); if (pStep1Data->strImagePath.back() != '/') { pStep1Data->strImagePath += "/"; } std::string strImagePath = pStep1Data->strImagePath + pStep1Data->strImageName; std::string strJsonPath = pStep1Data->strImagePath + StringUtil::getins()->replace_all_distinct(pStep1Data->strImageName, "jpg", "json"); Json::Value jvInfo; // 读取目录中的图像和json if (!this->readJson(strJsonPath, jvInfo)) { continue; } std::shared_ptr pVTrainStep1Data = std::make_shared(); pVTrainStep1Data->iFrameId = jvInfo["frameId"].asInt(); pVTrainStep1Data->strTrainDate = jvInfo["trainDate"].asString(); pVTrainStep1Data->strTrainTime = jvInfo["trainTime"].asString(); pVTrainStep1Data->iTrainStage = jvInfo["trainStage"].asInt(); pVTrainStep1Data->cvImage = cv::imread(strImagePath); pVTrainStep1Data->bIsEnd = pStep1Data->bIsEnd; outputQueMap_[strPort0_]->push(std::static_pointer_cast(pVTrainStep1Data), true); // outputQueMap_[strPort1_]->push(std::static_pointer_cast(pVTrainStep1Data), true); } return APP_ERR_OK; }