贵州西洋修改版
This commit is contained in:
parent
34061d64d5
commit
b46d2730cc
|
@ -1,4 +1,7 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="CMakePythonSetting">
|
||||
<option name="pythonIntegrationState" value="YES" />
|
||||
</component>
|
||||
<component name="CMakeWorkspace" PROJECT_DIR="$PROJECT_DIR$" />
|
||||
</project>
|
|
@ -195,5 +195,7 @@ inline int64_t volume(const nvinfer1::Dims& d);
|
|||
extern std::atomic<int> g_identify_type;
|
||||
// -1 = 未知方向; 1 = 向左行驶; 2 = 向右行驶
|
||||
extern std::atomic<int> g_come_direction;
|
||||
// 0 = 无车; 1 = 有车;
|
||||
extern std::atomic<int> g_car_type;
|
||||
|
||||
#endif
|
||||
|
|
|
@ -10,7 +10,7 @@ engines:
|
|||
VideoDecodeEngine: 1
|
||||
VideoDecodeEngine: 2
|
||||
ControlEngine: 0
|
||||
# SaveMoveImageEngine: 0
|
||||
SaveMoveImageEngine: 0
|
||||
SaveMoveInfoEngine: 0
|
||||
ContainerStep1InferenceEngine: 0
|
||||
CornerInferenceEngine: 0
|
||||
|
@ -38,7 +38,7 @@ connects:
|
|||
ControlEngine_0_1: "ContainerStep1InferenceEngine_0_0 1024"
|
||||
ControlEngine_0_2: "CornerInferenceEngine_0_0 1024"
|
||||
ControlEngine_0_3: "SaveMoveInfoEngine_0_0 1024"
|
||||
ControlEngine_0_4: "SaveMoveImageEngine_0_0 1024"
|
||||
ControlEngine_0_4: "SaveMoveImageEngine_0_0 1024"
|
||||
ContainerStep1InferenceEngine_0_0: "Step1MergeEngine_0_0 1024"
|
||||
CornerInferenceEngine_0_0: "Step1MergeEngine_0_1 1024"
|
||||
Step1MergeEngine_0_0: "ContainerStep2InferenceEngine_0_0 1024"
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -72,7 +72,7 @@ void ControlEngine::endIdentify(int iDataSource)
|
|||
|
||||
void ControlEngine::sendWSEngine(std::string msg)
|
||||
{
|
||||
msg = "{\"status\":\"normal\",\"msg\":" + msg +"}";
|
||||
msg = "{\"containerNo\":\"\",\"detectDate\":\"\",\"detectTime\":\"\",\"id\":\"\",\"images\":\"\",\"imagesDir\":\"\",\"status\":\"normal\",\"msg\":\"" + msg +"\"}";
|
||||
// 传给websocket引擎
|
||||
outputQueMap_[strPort0_]->push(std::static_pointer_cast<void>(std::make_shared<std::string>(msg)));
|
||||
}
|
||||
|
@ -132,6 +132,7 @@ void ControlEngine::detectControl(std::shared_ptr<std::string> pWSServerOrder)
|
|||
break;
|
||||
}
|
||||
this->mapIdentifyType_ = {{0, IDENTIFY_START}, {1, IDENTIFY_START}, {2, IDENTIFY_START}};
|
||||
g_car_type = 1;
|
||||
break;
|
||||
case IDENTIFY_STOP:
|
||||
if (!this->isDetecting())
|
||||
|
@ -142,6 +143,7 @@ void ControlEngine::detectControl(std::shared_ptr<std::string> pWSServerOrder)
|
|||
break;
|
||||
}
|
||||
this->mapIdentifyType_ = {{0, IDENTIFY_INIT}, {1, IDENTIFY_INIT}, {2, IDENTIFY_INIT}};
|
||||
g_car_type = 0;
|
||||
break;
|
||||
case IDENTIFY_RECORD:
|
||||
if (!jvOrder.isMember("containerNo"))
|
||||
|
@ -190,6 +192,14 @@ APP_ERROR ControlEngine::Process()
|
|||
if (pProcessData->bIsEnd)
|
||||
{
|
||||
if (!this->isDetecting()) continue;
|
||||
// if (this->strDetectDate_.empty())
|
||||
// {
|
||||
// std::string msg = "数据源:" + std::to_string(pProcessData->iDataSource) + " 摄像头读取画面失败,停止识别!";
|
||||
// this->sendWSEngine(msg);
|
||||
// this->mapIdentifyType_[pProcessData->iDataSource] = IDENTIFY_INIT;
|
||||
// continue;
|
||||
// }
|
||||
|
||||
this->endIdentify(pProcessData->iDataSource);
|
||||
LogInfo << "数据源:" << pProcessData->iDataSource << " 画面读取结束:停止识别!";
|
||||
continue;
|
||||
|
@ -267,7 +277,7 @@ APP_ERROR ControlEngine::Process()
|
|||
pSaveImgData->bIsEnd = pProcessData->bIsEnd;
|
||||
outputQueMap_[strPort4_]->push(std::static_pointer_cast<void>(pSaveImgData), true);
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -384,7 +384,7 @@ APP_ERROR ContainerDivideEngine::Process()
|
|||
|
||||
if (pVStep2OutputData->bIsEnd)
|
||||
{
|
||||
if (this->bLastIsEnd == pVStep2OutputData->bIsEnd) continue;
|
||||
// if (this->bLastIsEnd == pVStep2OutputData->bIsEnd) continue;
|
||||
|
||||
std::shared_ptr<VSelectBestData> pVSelectBestData = std::make_shared<VSelectBestData>();
|
||||
pVSelectBestData->bIsEnd = true;
|
||||
|
|
|
@ -1 +1 @@
|
|||
#include "SaveResultCSVEngine.h"
using namespace ai_matrix;
SaveResultCSVEngine::SaveResultCSVEngine() {}
SaveResultCSVEngine::~SaveResultCSVEngine() {}
APP_ERROR SaveResultCSVEngine::Init()
{
strPort0_ = engineName_ + "_" + std::to_string(engineId_) + "_0";
strPort1_ = engineName_ + "_" + std::to_string(engineId_) + "_1";
this->baseConfig_ = Config::getins()->getBaseConfig();
LogInfo << "SaveResultCSVEngine Init ok";
return APP_ERR_OK;
}
APP_ERROR SaveResultCSVEngine::DeInit()
{
LogInfo << "SaveResultCSVEngine DeInit ok";
return APP_ERR_OK;
}
/**
* 保存车厢的最优结果到CSV中
* inParam : std::shared_ptr<Train> pTrain :列车信息
* outParam:
* return : true/false
*/
bool SaveResultCSVEngine::saveTrainCsv(std::shared_ptr<DetectResultData> pDetectResultData)
{
//1. 创建保存路径 (固定路径/YYYY-MM-DD/hh-mm-ss/)
if (!FileUtil::getins()->createDirPath(this->baseConfig_.strResultPath))
{
LogError << "日期:" << pDetectResultData->strDetectDate << " csv save err";
return false;
}
//2. 保存csv
std::string strCsvName = pDetectResultData->strDetectDate + ".csv";
std::string strCsvPath = this->baseConfig_.strResultPath + "/"
+ pDetectResultData->strDetectDate + "/"
+ strCsvName;
LogInfo << strCsvPath;
bool bIsExsit = false;
if (access(strCsvPath.c_str(), F_OK) != -1)
{
bIsExsit = true;
}
try
{
// 写文件
std::ofstream outFile;
outFile.open(strCsvPath, std::ios::app);
if (!bIsExsit)
{
outFile << "Time" << ','
<< "Container" << ','
<< "Image"
<< std::endl;
}
std::string strContainerNo;
for (const auto & containerNo_it : pDetectResultData->vecContainerNO)
{
strContainerNo += "[";
strContainerNo += containerNo_it;
strContainerNo += "]";
}
std::string strImage;
for (const auto & image_it : pDetectResultData->vecImage)
{
strImage += "[";
strImage += image_it;
strImage += "]";
std::string strDebugImage = this->baseConfig_.strDebugResultPath + "/"
+ pDetectResultData->strDetectDate + "/"
+ StringUtil::getins()->replace_all_distinct(pDetectResultData->strDetectTime, ":", "-")
+ "/" + image_it;
std::string strResultImage = this->baseConfig_.strResultPath + "/"
+ pDetectResultData->strDetectDate + "/"
+ StringUtil::getins()->replace_all_distinct(pDetectResultData->strDetectTime, ":", "-")
+ "/" + image_it;
FileUtil::getins()->copyFile(strDebugImage, strResultImage);
}
outFile << pDetectResultData->strDetectTime << ','
<< strContainerNo << ','
<< strImage << ','
<< std::endl;
outFile.close();
}
catch (const std::exception &)
{
LogError << "strCsvPath:" << strCsvPath << " train savecsv fail!";
return false;
}
return true;
}
APP_ERROR SaveResultCSVEngine::Process()
{
int iRet = APP_ERR_OK;
while (!isStop_)
{
//pop端口0 车厢信息
std::shared_ptr<void> pVoidData0 = nullptr;
iRet = inputQueMap_[strPort0_]->pop(pVoidData0);
if (nullptr == pVoidData0)
{
usleep(1000);
continue;
}
std::shared_ptr<DetectResultData> pDetectResultData = std::static_pointer_cast<DetectResultData>(pVoidData0);
this->saveTrainCsv(pDetectResultData);
}
return APP_ERR_OK;
}
|
||||
#include "SaveResultCSVEngine.h"
using namespace ai_matrix;
SaveResultCSVEngine::SaveResultCSVEngine() {}
SaveResultCSVEngine::~SaveResultCSVEngine() {}
APP_ERROR SaveResultCSVEngine::Init()
{
strPort0_ = engineName_ + "_" + std::to_string(engineId_) + "_0";
strPort1_ = engineName_ + "_" + std::to_string(engineId_) + "_1";
this->baseConfig_ = Config::getins()->getBaseConfig();
LogInfo << "SaveResultCSVEngine Init ok";
return APP_ERR_OK;
}
APP_ERROR SaveResultCSVEngine::DeInit()
{
LogInfo << "SaveResultCSVEngine DeInit ok";
return APP_ERR_OK;
}
/**
* 保存车厢的最优结果到CSV中
* inParam : std::shared_ptr<Train> pTrain :列车信息
* outParam:
* return : true/false
*/
bool SaveResultCSVEngine::saveTrainCsv(std::shared_ptr<DetectResultData> pDetectResultData)
{
//1. 创建保存路径 (固定路径/YYYY-MM-DD/hh-mm-ss/)
if (!FileUtil::getins()->createDirPath(this->baseConfig_.strResultPath))
{
LogError << "日期:" << pDetectResultData->strDetectDate << " csv save err";
return false;
}
if (pDetectResultData->strDetectDate.empty())
{
return true;
}
//2. 保存csv
std::string strCsvName = pDetectResultData->strDetectDate + ".csv";
std::string strCsvPath = this->baseConfig_.strResultPath + "/"
+ pDetectResultData->strDetectDate + "/"
+ strCsvName;
// LogInfo << strCsvPath;
bool bIsExsit = false;
if (access(strCsvPath.c_str(), F_OK) != -1)
{
bIsExsit = true;
}
try
{
// 写文件
std::ofstream outFile;
outFile.open(strCsvPath, std::ios::app);
if (!bIsExsit)
{
outFile << "Time" << ','
<< "Container" << ','
<< "Image"
<< std::endl;
}
std::string strContainerNo;
for (const auto & containerNo_it : pDetectResultData->vecContainerNO)
{
strContainerNo += "[";
strContainerNo += containerNo_it;
strContainerNo += "]";
}
std::string strImage;
for (const auto & image_it : pDetectResultData->vecImage)
{
strImage += "[";
strImage += image_it;
strImage += "]";
std::string strDebugImage = this->baseConfig_.strDebugResultPath + "/"
+ pDetectResultData->strDetectDate + "/"
+ StringUtil::getins()->replace_all_distinct(pDetectResultData->strDetectTime, ":", "-")
+ "/" + image_it;
std::string strResultImage = this->baseConfig_.strResultPath + "/"
+ pDetectResultData->strDetectDate + "/"
+ StringUtil::getins()->replace_all_distinct(pDetectResultData->strDetectTime, ":", "-")
+ "/" + image_it;
FileUtil::getins()->copyFile(strDebugImage, strResultImage);
}
outFile << pDetectResultData->strDetectTime << ','
<< strContainerNo << ','
<< strImage << ','
<< std::endl;
outFile.close();
}
catch (const std::exception &)
{
LogError << "strCsvPath:" << strCsvPath << " train savecsv fail!";
return false;
}
return true;
}
APP_ERROR SaveResultCSVEngine::Process()
{
int iRet = APP_ERR_OK;
while (!isStop_)
{
//pop端口0 车厢信息
std::shared_ptr<void> pVoidData0 = nullptr;
iRet = inputQueMap_[strPort0_]->pop(pVoidData0);
if (nullptr == pVoidData0)
{
usleep(1000);
continue;
}
std::shared_ptr<DetectResultData> pDetectResultData = std::static_pointer_cast<DetectResultData>(pVoidData0);
this->saveTrainCsv(pDetectResultData);
}
return APP_ERR_OK;
}
|
|
@ -49,7 +49,6 @@ void SelectBestEngine::sendWSServer(DetectResultData &detectResultData)
|
|||
std::string data;
|
||||
Json::Value jsonData;
|
||||
|
||||
strImageDir = detectResultData.strDetectDate + "/" + ai_matrix::StringUtil::getins()->replace_all_distinct(detectResultData.strDetectTime, ":", "-") + "/";
|
||||
for (int i = 0; i < detectResultData.vecImage.size(); ++i)
|
||||
{
|
||||
strImage += detectResultData.vecImage[i];
|
||||
|
@ -58,7 +57,11 @@ void SelectBestEngine::sendWSServer(DetectResultData &detectResultData)
|
|||
strImage += ",";
|
||||
}
|
||||
}
|
||||
|
||||
if (!detectResultData.vecImage.empty())
|
||||
{
|
||||
LogInfo << " 图片数: " << detectResultData.vecImage.size();
|
||||
strImageDir = detectResultData.strDetectDate + "/" + ai_matrix::StringUtil::getins()->replace_all_distinct(detectResultData.strDetectTime, ":", "-") + "/";
|
||||
}
|
||||
|
||||
std::string strContainerNo;
|
||||
for (int i = 0; i < detectResultData.vecContainerNO.size(); ++i)
|
||||
|
@ -217,6 +220,7 @@ APP_ERROR SelectBestEngine::Process()
|
|||
this->strDetectTime_ = pVSelectBestData->strDetectTime;
|
||||
}
|
||||
|
||||
LogInfo << " --- >>> " << this->iEndCount_ << " 数据源: " << pVSelectBestData->iDataSource;
|
||||
this->iEndCount_++;
|
||||
if (!(this->iEndCount_ % this->vecDataSourceConfig_.size()))
|
||||
{
|
||||
|
@ -225,7 +229,8 @@ APP_ERROR SelectBestEngine::Process()
|
|||
}
|
||||
continue;
|
||||
}
|
||||
this->iEndCount_ = 0;
|
||||
LogInfo << " --- >>> 有数据 数据源: " << pVSelectBestData->iDataSource;
|
||||
if (g_car_type) this->iEndCount_ = 0;
|
||||
|
||||
if (this->strImagePath_.empty())
|
||||
{
|
||||
|
|
|
@ -143,10 +143,14 @@ void WSServerEngine::stop()
|
|||
std::string WSServerEngine::onCMD(CMDConnData &conn, int argc, const char **argv)
|
||||
{
|
||||
std::string msg = argv[0];
|
||||
|
||||
if (msg == "heartbeat") return "";
|
||||
|
||||
std::string strShow = "VCarContainer 收到 " + conn.ip + " 的信息:" + msg;
|
||||
LogInfo << strShow;
|
||||
outputQueMap_[strPort0_]->push(std::static_pointer_cast<std::string>(std::make_shared<std::string>(msg)), true);
|
||||
this->sendAllClient(strShow);
|
||||
return "";
|
||||
}
|
||||
|
||||
void WSServerEngine::sendAllClient(const std::string &msg)
|
||||
|
|
Loading…
Reference in New Issue