VTrain/engine/Step1DataReadEngine/TrainStep1DataReadEngine.cpp

92 lines
2.9 KiB
C++

#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<void> pVoidData0 = nullptr;
iRet = inputQueMap_[strPort0_]->pop(pVoidData0);
if (nullptr == pVoidData0)
{
usleep(1000);
continue;
}
std::shared_ptr<VToStep1Data> pStep1Data = std::static_pointer_cast<VToStep1Data>(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<VTrainStep1Data> pVTrainStep1Data = std::make_shared<VTrainStep1Data>();
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<void>(pVTrainStep1Data), true);
// outputQueMap_[strPort1_]->push(std::static_pointer_cast<void>(pVTrainStep1Data), true);
}
return APP_ERR_OK;
}