1、优化识别切分效果,增加报警信息
This commit is contained in:
parent
d72bd78b59
commit
f18e10f8f3
236
CMakeLists.txt
236
CMakeLists.txt
File diff suppressed because one or more lines are too long
|
|
@ -114,7 +114,7 @@ model:
|
|||
|
||||
gc_http_open: 1
|
||||
username: "guest_01"
|
||||
password: "d55b0f642e817eea24725d2f2a31dd08" # 神东
|
||||
password: "0a1688bce402a5f6a4279abbfc89c203" # 神东 d55b0f642e817eea24725d2f2a31dd08
|
||||
gc_http_url: "http://192.168.2.211:20004/api/train-carriage/identification/video-save"
|
||||
gc_gettoken_url: "http://192.168.2.211:20004/api/blade-auth/oauth/token"
|
||||
gc_image_srv: "http://192.168.2.211:9010/"
|
||||
|
|
@ -182,5 +182,5 @@ gc_c_space_frame_width: 500
|
|||
# 是否识别车头
|
||||
gc_train_heard_detect: true
|
||||
|
||||
#过期文件夹天数
|
||||
# 识别结果保存天数
|
||||
gc_days_for_result_expire_folder: 3
|
||||
|
|
|
|||
|
|
@ -896,6 +896,7 @@ typedef struct
|
|||
int iBigClassId = -1; //大框id (给第二步用 1-属性 23456-编号)
|
||||
uint32_t iFrameId = 0; //帧号
|
||||
float fCenterX; //第一步识别目标中心点X坐标
|
||||
float fTargetWidth; // 第一步识别目标X坐标宽度
|
||||
} CalculateInfo;
|
||||
|
||||
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -50,6 +50,7 @@ private:
|
|||
std::map<int, std::vector<std::string>> mapSourcePushPort_;
|
||||
|
||||
MoveData moveData_;
|
||||
std::queue<MoveData> queuwMoveData_;
|
||||
std::string strDataDir_;
|
||||
|
||||
uint32_t iOrigDataNO_; //原过车数据个数
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -65,6 +65,8 @@ private:
|
|||
int nDelayTime;
|
||||
bool bIsAvc_ = false;
|
||||
int iAudioStream_ = -1;
|
||||
|
||||
bool bCameraError_ = false;
|
||||
};
|
||||
|
||||
ENGINE_REGIST(CameraEngine)
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -48,6 +48,7 @@ private:
|
|||
|
||||
private:
|
||||
std::string strResultPath_;
|
||||
std::string strLogBakPath_;
|
||||
|
||||
int iDaysNumber_;
|
||||
};
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -2,6 +2,22 @@
|
|||
|
||||
using namespace ai_matrix;
|
||||
|
||||
namespace
|
||||
{
|
||||
std::map<std::string, std::string> mapLoad = {
|
||||
{"C62", "60"},
|
||||
{"C62B", "61"},
|
||||
{"C63", "61"},
|
||||
{"C64", "61"},
|
||||
{"C65", "60"},
|
||||
{"C70", "70"},
|
||||
{"C80", "80"},
|
||||
{"KM70", "70"},
|
||||
{"KM81", "81"},
|
||||
{"KM98", "98"}
|
||||
};
|
||||
}
|
||||
|
||||
MergerAllEngine::MergerAllEngine() {}
|
||||
|
||||
MergerAllEngine::~MergerAllEngine() {}
|
||||
|
|
@ -312,12 +328,28 @@ APP_ERROR MergerAllEngine::Process()
|
|||
特殊处理:针对车头在后的且当前为最后一节,且未识别到车型,则默认设置为车头。
|
||||
防止车尾间隔误识别,多切分车型,且web端无法过滤的问题。
|
||||
*/
|
||||
if (!bHeadFrontFlag_ && pTrain->bIsEnd && pTrain->trainNum.iTrainTypeId == -1)
|
||||
if (!bHeadFrontFlag_
|
||||
&& pTrain->bIsEnd
|
||||
&& pTrain->trainNum.iTrainTypeId == -1)
|
||||
{
|
||||
LogDebug << "cometime:" << pTrain->strTrainDate << " " << pTrain->strTrainName << " iCarXH:" << pTrain->iCarXH
|
||||
<< " num:" << pTrain->trainNum.strTrainNum;
|
||||
pTrain->trainNum.iTrainTypeId = 0;
|
||||
}
|
||||
|
||||
// 修正载重
|
||||
for (std::map<std::string, std::string>::iterator it =
|
||||
mapLoad.begin();
|
||||
it != mapLoad.end(); ++it) {
|
||||
|
||||
if (pTrain->trainNum.strTrainType.find(it->first) !=
|
||||
std::string::npos) {
|
||||
pTrain->trainPro.strLoad = it->second;
|
||||
}
|
||||
}
|
||||
|
||||
// if (pTrain->trainPro.strLoad.size() > 2 && pTrain->trainPro.strLoad[0] != '1') pTrain->trainPro.strLoad = "";
|
||||
|
||||
PushData(pTrain);
|
||||
|
||||
//最后一节处理后,初始化参数
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -313,7 +313,7 @@ void* SocketEngine::heart_handler(void* arg)
|
|||
++it;
|
||||
}
|
||||
}
|
||||
sleep(3); // 定时三秒
|
||||
sleep(1); // 定时三秒
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -192,6 +192,8 @@ void MoveEngine::SingleDeviceProcess(std::shared_ptr<ProcessData> pProcessData,
|
|||
{
|
||||
outputQueMap_[engineName_ + "_" + std::to_string(engineId_) + "_" + std::to_string(*iter)]->push(std::static_pointer_cast<void>(pMoveData));
|
||||
}
|
||||
|
||||
// LogInfo << "【来车检测】" << pMoveData->iFrameId << " isEnd:" << pProcessData->bIsEnd;
|
||||
//通知第一步开始识别
|
||||
outputQueMap_[engineName_ + "_" + std::to_string(engineId_) + "_5"]->push(std::static_pointer_cast<void>(pMoveData));
|
||||
}
|
||||
|
|
@ -283,16 +285,16 @@ APP_ERROR MoveEngine::Process()
|
|||
// LogInfo<<"来车当前状态:"<< (nType == 0 ? "有车头" : (nType == 1 ? "无车"));
|
||||
switch (nType) {
|
||||
case 0:
|
||||
LogDebug << "来车状态:有车头";
|
||||
LogDebug << iMoveDataNO_ * dataSourceCfg_.iSkipInterval << "来车状态:有车头";
|
||||
break;
|
||||
case 1:
|
||||
LogDebug << "来车状态:无车";
|
||||
LogDebug << iMoveDataNO_ * dataSourceCfg_.iSkipInterval << "来车状态:无车";
|
||||
break;
|
||||
case 2:
|
||||
LogDebug << "来车状态:车尾";
|
||||
LogDebug << iMoveDataNO_ * dataSourceCfg_.iSkipInterval << "来车状态:车尾";
|
||||
break;
|
||||
case 3:
|
||||
LogDebug << "来车状态:有车";
|
||||
LogDebug << iMoveDataNO_ * dataSourceCfg_.iSkipInterval << "来车状态:有车";
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -194,9 +194,9 @@ void TrainStepOneEngine::FilterInvalidInfo(std::vector<stDetection> &vecRet, std
|
|||
std::vector<stDetection> vecSpaceInfo;
|
||||
for (auto it = vecRet.begin(); it != vecRet.end();)
|
||||
{
|
||||
LogDebug << "frameId:" << pProcessData->iFrameId
|
||||
<< " bigclassid:" << it->class_id << " ltx:" << it->bbox[0] << " lty:" << it->bbox[1]
|
||||
<< " rbx:" << it->bbox[2] << " rby:" << it->bbox[3];
|
||||
// LogDebug << "frameId:" << pProcessData->iFrameId
|
||||
// << " bigclassid:" << it->class_id << " ltx:" << it->bbox[0] << " lty:" << it->bbox[1]
|
||||
// << " rbx:" << it->bbox[2] << " rby:" << it->bbox[3];
|
||||
// 根据配置文件中 设置的识别范围,过滤掉无效数据
|
||||
if (!(it->bbox[0] >= dataSourceCfg.fIdentifyAreasLTX &&
|
||||
it->bbox[1] >= dataSourceCfg.fIdentifyAreasLTY &&
|
||||
|
|
@ -322,6 +322,22 @@ void TrainStepOneEngine::FilterInvalidInfo(std::vector<stDetection> &vecRet, std
|
|||
continue;
|
||||
}
|
||||
|
||||
if (it->class_id == K_TRAIN_NUM)
|
||||
{
|
||||
int iCenterY = pProcessData->iHeight / 2;
|
||||
int iHeight0 = it->bbox[1] / 2 + it->bbox[3] / 2;
|
||||
if (iHeight0 > iCenterY) {
|
||||
LogWarn << "矿车编号大框在画面Y轴中线以下,帧号:"
|
||||
<< pProcessData->iFrameId
|
||||
<< " 画面Y轴中心:" << iCenterY
|
||||
<< " 大框Y轴中心:" << iHeight0 ;
|
||||
// << "[" << it->bbox[0] << "," << it->bbox[1] << "]"
|
||||
// << "[" << it->bbox[2] << "," << it->bbox[3] << "]";
|
||||
it = vecRet.erase(it);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
//补连塔的相机比较近,间隔基本在画面底部,因此当间隔比较靠画面上时过滤掉。
|
||||
if ((it->class_id >= 9 && it->class_id <= 17 && it->class_id != 15) || it->class_id == U_TRAIN_SPACE)
|
||||
{
|
||||
|
|
@ -484,10 +500,10 @@ APP_ERROR TrainStepOneEngine::Process()
|
|||
SetTargetType(postSubData);
|
||||
pPostData->vecPostSubData.emplace_back(postSubData);
|
||||
|
||||
// LogDebug << "数据源:" << pProcessData->iDataSource << " 帧:" << pProcessData->iFrameId
|
||||
// << " --iClassId:" << singledata.iClassId << " iLine:" << singledata.iLine << " confidence=" << singledata.fScore
|
||||
// << " lx=" << singledata.fLTX << " ly=" << singledata.fLTY << " rx=" << singledata.fRBX << " ry=" << singledata.fRBY
|
||||
// << " clear:" << singledata.fClear;
|
||||
LogDebug << "数据源:" << pProcessData->iDataSource << " 帧:" << pProcessData->iFrameId
|
||||
<< " --iClassId:" << singledata.iClassId << " iLine:" << singledata.iLine << " confidence=" << singledata.fScore
|
||||
<< " lx=" << singledata.fLTX << " ly=" << singledata.fLTY << " rx=" << singledata.fRBX << " ry=" << singledata.fRBY
|
||||
<< " clear:" << singledata.fClear;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue