VTrain/engine/Step1FilterInferenceEngine/TrainStep1FilterEngine.cpp

1 line
32 KiB
C++
Raw Normal View History

2024-11-27 12:47:45 +00:00
#include "TrainStep1FilterEngine.h" using namespace ai_matrix; //namespace //{ // //按照x坐标排列 // bool CompareX(const SingleData &a, const SingleData &b) // { // return a.fLTX < b.fLTX; // } //} TrainStep1FilterEngine::TrainStep1FilterEngine() {} TrainStep1FilterEngine::~TrainStep1FilterEngine() {} APP_ERROR TrainStep1FilterEngine::Init() { strPort0_ = engineName_ + "_" + std::to_string(engineId_) + "_0"; this->baseConfig_ = Config::getins()->getBaseConfig(); this->dataSourceConfig_ = Config::getins()->getDataSourceConfig(); this->identifyConfig_ = Config::getins()->getIdentifyConfig(); this->mapTargetStr_.insert(std::make_pair(NUM, "NUM")); this->mapTargetStr_.insert(std::make_pair(PRO, "PRO")); this->mapTargetStr_.insert(std::make_pair(HEAD, "HEAD")); this->mapTargetStr_.insert(std::make_pair(SPACE, "SPACE"));//SPACE this->mapTargetStr_.insert(std::make_pair(TRAINSPACE, "SPACE"));//SPACE this->mapTargetStr_.insert(std::make_pair(CONTAINER, "CONTAINER"));//CONTAINER this->initParam(); LogInfo << "TrainStep1FilterEngine Init ok"; return APP_ERR_OK; } APP_ERROR TrainStep1FilterEngine::DeInit() { LogInfo << "TrainStep1FilterEngine DeInit ok"; return APP_ERR_OK; } /** * 参数初始化(列车结束时需调用) */ void TrainStep1FilterEngine::initParam() { this->pInferenceResultDataPre_ = nullptr; this->iNotChgCount_ = 0; while (!this->stackBackInfo_.empty()) { this->stackBackInfo_.pop(); } while (!this->queInferenceResultData_.empty()) { this->queInferenceResultData_.pop(); } iTrainStatus_ = TRAINSTATUS_RUN; g_come_direction = DIRECTION_UNKNOWN; mapCalDirection_.clear(); } void TrainStep1FilterEngine::addBackInfo() { std::string strAllClassType; for (size_t i = 0; i < this->pInferenceResultDataPre_->vecSingleData.size(); i++) { if (strAllClassType.find(this->mapTargetStr_[this->pInferenceResultDataPre_->vecSingleData[i].iTargetType]) != std::string::npos) { continue; } strAllClassType += this->mapTargetStr_[this->pInferenceResultDataPre_->vecSingleData[i].iTargetType]; } if (strAllClassType.empty()) { return; } TrainBackInfo trainBackInfo; trainBackInfo.pInferenceResultData = this->pInferenceResultDataPre_; trainBackInfo.strAllClassType = strAllClassType; if (this->stackBackInfo_.empty()) { this->stackBackInfo_.push(trainBackInfo); LogDebug << "frameId:" << this->pInferenceResultDataPre_->iFrameId << " 新增倒车信息:" << strAllClassType << " 当前数量:" << this->stackBackInfo_.size(); } else { TrainBackInfo trainBackInfoTop = stackBackInfo_.top(); if (trainBackInfoTop.strAllClassType != trainBackInfo.strAllClassType) { if (((g_come_direction == DIRECTION_RIGHT && this->dataSourceConfig_.iRightFirst == RIGHT_RUN_AND_PRO_FIRST) || (g_come_direction == DIRECTION_LEFT && this->dataSourceConfig_.iLeftFirst == LEFT_RUN_AND_PRO_FIRST)) && ((trainBackInfo.strAllClassType == "SPACE" && (trainBackInfoTop.strAllClassType == "PROSPACE" || trainBackInfoTop.strAllClassType == "SPACEPRO")) || (trainBackInfo.strAllClassType == "NUM" && (trainBackInfoTop.strAllClassType == "NUMSPACE" || trainBackInfoTop.strAllClassType == "SPACENUM")) || ((trainBackInfo.strAllClassType == "PROSPACE" || trainBackInfo.strAllClassType == "SPACEPRO") && trainBackInfoTop.strAllClassType == "PRO"))) { return; } if (((g_come_direction == DIRECTION_RIGHT && this->dataSourceConfig_.iRightFirst == RIGHT_RUN_AND_NUM_FIRST) || (g_come_direction == DIRECTION_LEFT && this->dataSourceConfig_.iRightFir