95 lines
3.0 KiB
C++
95 lines
3.0 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->iDataSource = pStep1Data->iDataSource;
|
|
pVTrainStep1Data->iFrameId = jvInfo["frameId"].asInt();
|
|
pVTrainStep1Data->strTrainDate = jvInfo["trainDate"].asString();
|
|
pVTrainStep1Data->strTrainTime = jvInfo["trainTime"].asString();
|
|
pVTrainStep1Data->strTrainName = jvInfo["trainName"].asString();
|
|
pVTrainStep1Data->iTrainStage = jvInfo["trainStage"].asInt();
|
|
pVTrainStep1Data->cvImage = cv::imread(strImagePath);
|
|
pVTrainStep1Data->bIsEnd = pStep1Data->bIsEnd;
|
|
|
|
// LogInfo << "数据源:" << pVTrainStep1Data->iDataSource << " -- 帧:" << pVTrainStep1Data->iFrameId;
|
|
outputQueMap_[strPort0_]->push(std::static_pointer_cast<void>(pVTrainStep1Data), true);
|
|
}
|
|
return APP_ERR_OK;
|
|
}
|
|
|