generated from zhangwei/Matrixai
92 lines
2.9 KiB
C++
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;
|
||
|
|
}
|
||
|
|
|