generated from zhangwei/Matrixai
新增引擎
This commit is contained in:
parent
fe8de3ab8e
commit
829d3e4790
|
@ -111,6 +111,10 @@ aux_source_directory(${PROJECT_SRC_ROOT}/engine/DecodeEngine DecodeEngine_SRC)
|
|||
include_directories(${PROJECT_SRC_ROOT}/engine/MoveEngine)
|
||||
aux_source_directory(${PROJECT_SRC_ROOT}/engine/MoveEngine MoveEngine_SRC)
|
||||
|
||||
# SaveImageEngine
|
||||
include_directories(${PROJECT_SRC_ROOT}/engine/SaveImageEngine)
|
||||
aux_source_directory(${PROJECT_SRC_ROOT}/engine/SaveImageEngine SaveImageEngine_SRC)
|
||||
|
||||
# 其他头文件
|
||||
include_directories(
|
||||
#base include
|
||||
|
@ -179,6 +183,7 @@ file(
|
|||
${DataSourceEngine_SRC}
|
||||
${DecodeEngine_SRC}
|
||||
${MoveEngine_SRC}
|
||||
${SaveImageEngine_SRC}
|
||||
)
|
||||
|
||||
# 服务端
|
||||
|
|
|
@ -203,14 +203,24 @@ typedef struct
|
|||
|
||||
// 识别区域坐标
|
||||
typedef struct {
|
||||
int iLine = -1; //字段代号(仅第二步使用)
|
||||
int iClassId = -1; //大小框的类别
|
||||
float fScore = 0; //分数
|
||||
float fClear = 0; //清晰度
|
||||
float fLTX = 0; //左上X坐标 Left Top x
|
||||
float fLTY = 0; //左上y坐标 Left Top y
|
||||
float fRBX = 0; //右下y坐标 Right Bottom x
|
||||
float fRBY = 0; //右下y坐标 Right Bottom y
|
||||
// 字段代号(仅第二步使用)
|
||||
int iLine = -1;
|
||||
// 大小框的类别
|
||||
int iClassId = -1;
|
||||
// 框的名称
|
||||
std::string strClassName;
|
||||
// 分数
|
||||
float fScore = 0;
|
||||
// 清晰度
|
||||
float fClear = 0;
|
||||
// 左上X坐标 Left Top x
|
||||
float fLTX = 0;
|
||||
// 左上y坐标 Left Top y
|
||||
float fLTY = 0;
|
||||
// 右下y坐标 Right Bottom x
|
||||
float fRBX = 0;
|
||||
// 右下y坐标 Right Bottom y
|
||||
float fRBY = 0;
|
||||
} VCoordinate;
|
||||
|
||||
// 集装箱信息
|
||||
|
@ -299,16 +309,24 @@ typedef struct
|
|||
// 存图数据
|
||||
typedef struct
|
||||
{
|
||||
// 车厢位置状态
|
||||
std::string strTrainStage;
|
||||
// 行车方向
|
||||
std::string strDirection;
|
||||
// 车厢运动状态
|
||||
std::string strTrainStatus;
|
||||
// 帧图像数据
|
||||
VFrameData frameData;
|
||||
uint32_t iFrameId = 0;
|
||||
|
||||
std::string strImgPath;
|
||||
std::string strImgName;
|
||||
bool bIsEnd = false; // 列车结束标识
|
||||
std::shared_ptr<DecodedData> pDecodeData = nullptr;
|
||||
// 车厢位置阶段(车头、头身交接、车身、车尾、无车)
|
||||
int iTrainStage = MONITOR_MODEL_INIT_STATE;
|
||||
// 图片存储目录
|
||||
std::string strImgPath;
|
||||
// 图片名字
|
||||
std::string strImgName;
|
||||
// 图片需要标记的框坐标
|
||||
std::vector<VCoordinate> vecCoordinate;
|
||||
} SaveImgData;
|
||||
|
||||
// 0 = 停止识别; 1 = 开始识别
|
||||
extern std::atomic<int> g_identify_type;
|
||||
// -1 = 未知方向; 1 = 向左行驶; 2 = 向右行驶
|
||||
extern std::atomic<int> g_come_direction;
|
||||
#endif
|
|
@ -8,8 +8,10 @@ engines:
|
|||
VideoEngine: 0
|
||||
VideoDecodeEngine: 0
|
||||
MoveEngine: 0
|
||||
SaveImageEngine: 0
|
||||
|
||||
#engine连接
|
||||
connects:
|
||||
VideoEngine_0_0: "VideoDecodeEngine_0_0 1024"
|
||||
VideoDecodeEngine_0_0: "MoveEngine_0_0 1024"
|
||||
MoveEngine_0_0: "SaveImageEngine_0_0 1024"
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -156,17 +156,16 @@ void MoveEngine::SingleDeviceProcess(std::shared_ptr<ProcessData> pProcessData,
|
|||
pProcessData->iDataNO = iMoveDataNO_++;
|
||||
//push端口,存图
|
||||
std::shared_ptr<SaveImgData> pSaveImgData = std::make_shared<SaveImgData>();
|
||||
pSaveImgData->iFrameId = pProcessData->iFrameId; // 帧号
|
||||
pSaveImgData->strImgPath = strResultPath_ + pProcessData->strTrainDate + "/" + pProcessData->strTrainTime;
|
||||
pSaveImgData->strImgName = std::to_string(pSaveImgData->iFrameId) + ".jpg";
|
||||
pSaveImgData->bIsEnd = pProcessData->bIsTrainEnd;
|
||||
pSaveImgData->iTrainStage = iType;
|
||||
pSaveImgData->strImgPath = baseConfig_.strDebugResultPath + "/" + pProcessData->strTrainDate + "/"
|
||||
+ StringUtil::getins()->replace_all_distinct(pProcessData->strTrainTime, ":", "-");
|
||||
pSaveImgData->strImgName = std::to_string(pProcessData->iFrameId) + ".jpg";
|
||||
// pSaveImgData->strTrainStage = intTrainStage_2_str(iType);
|
||||
pSaveImgData->frameData.pData = pProcessData->sourceFrameData.pData;
|
||||
pSaveImgData->frameData.iSize = pProcessData->sourceFrameData.iSize;
|
||||
pSaveImgData->frameData.iWidth = pProcessData->dataSourceInfo.iWidth;
|
||||
pSaveImgData->frameData.iHeight = pProcessData->dataSourceInfo.iHeight;
|
||||
pSaveImgData->frameData.i64TimeStamp = pProcessData->sourceFrameData.i64TimeStamp;
|
||||
// outputQueMap_[strPort0_]->push(std::static_pointer_cast<void>(pSaveImgData));
|
||||
outputQueMap_[strPort0_]->push(std::static_pointer_cast<void>(pSaveImgData));
|
||||
}
|
||||
|
||||
APP_ERROR MoveEngine::Process()
|
||||
|
@ -231,10 +230,10 @@ APP_ERROR MoveEngine::Process()
|
|||
// LogDebug <<"模型得分 车头:"<< fReturnVal[0] << " 车头车身交接:" << fReturnVal[1] <<" 无车:"<< fReturnVal[2]<<" 车尾:"<< fReturnVal[3]<<" 有车:"<< fReturnVal[4];
|
||||
switch (iType) {
|
||||
case MONITOR_MODEL_TRAIN_HEAD:
|
||||
LogDebug << "来车状态:有车头";
|
||||
LogDebug << "来车状态:车头";
|
||||
break;
|
||||
case MONITOR_MODEL_HEAD_FIRST:
|
||||
LogDebug << "来车状态:有车头";
|
||||
LogDebug << "来车状态:车头车身之间";
|
||||
break;
|
||||
case MONITOR_MODEL_NO_TRAIN:
|
||||
LogDebug << "来车状态:无车";
|
||||
|
@ -243,15 +242,13 @@ APP_ERROR MoveEngine::Process()
|
|||
LogDebug << "来车状态:车尾";
|
||||
break;
|
||||
case MONITOR_MODEL_TRAIN_BODY:
|
||||
LogDebug << "来车状态:有车";
|
||||
LogDebug << "来车状态:车厢";
|
||||
break;
|
||||
default:
|
||||
LogDebug << "来车状态:未定义";
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
|
||||
if (this->identifyConfig_.bTrainHeardDetect)
|
||||
{
|
||||
bGetTrainExist = (iType == MONITOR_MODEL_TRAIN_BODY
|
||||
|
@ -330,3 +327,21 @@ APP_ERROR MoveEngine::Process()
|
|||
}
|
||||
}
|
||||
|
||||
std::string MoveEngine::intTrainStage_2_str(int iTrainStage)
|
||||
{
|
||||
switch (iTrainStage) {
|
||||
case MONITOR_MODEL_TRAIN_HEAD:
|
||||
return "train_head";
|
||||
case MONITOR_MODEL_HEAD_FIRST:
|
||||
return "head_and_carriage";
|
||||
case MONITOR_MODEL_NO_TRAIN:
|
||||
return "no_train";
|
||||
case MONITOR_MODEL_TRAIN_TAIL:
|
||||
return "train_tail";
|
||||
case MONITOR_MODEL_TRAIN_BODY:
|
||||
return "carriage";
|
||||
default:
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -42,6 +42,8 @@ private:
|
|||
//使用单device处理
|
||||
void SingleDeviceProcess(std::shared_ptr<ProcessData> pProcessData, int nType);
|
||||
|
||||
std::string intTrainStage_2_str(int iTrainStage);
|
||||
|
||||
void sendComeTrain();
|
||||
|
||||
void sendEndTrain();
|
||||
|
@ -51,8 +53,8 @@ private:
|
|||
ai_matrix::ModelConfig modelConfig_;
|
||||
ai_matrix::IdentifyConfig identifyConfig_;
|
||||
ai_matrix::BaseConfig baseConfig_;
|
||||
std::string strResultPath_;
|
||||
std::string strBestPath_;
|
||||
// std::string strResultPath_;
|
||||
// std::string strBestPath_;
|
||||
|
||||
YoloV8Inference yolov8model;
|
||||
int iStepInter_ = 0; //(0:不识别; 1:开始识别; 2:结束识别)
|
||||
|
@ -76,7 +78,7 @@ private:
|
|||
unsigned int input_size = STEP0_INPUT_SIZE;
|
||||
unsigned int output_size = STEP0_OUTPUT_SIZE;
|
||||
unsigned int det_size = STEP0_CLASS_NUM + STEP0_CLEAR_NUM + 5;
|
||||
unsigned int batch_size = STEP0_BATCH_SIZE;
|
||||
unsigned int batch_size = STEP0_BATCH_SIZE;
|
||||
|
||||
YoloV5ModelInfo modelinfo;
|
||||
std::queue<std::shared_ptr<ProcessData>> queProcessData_;
|
||||
|
|
Loading…
Reference in New Issue