Train_Identify_arm/nvidia_ascend_engine/common_engine/SaveEngine/SaveCsvEngine.cpp

1 line
18 KiB
C++
Raw Normal View History

#include "SaveCsvEngine.h" using namespace ai_matrix; SaveCsvEngine::SaveCsvEngine() {} SaveCsvEngine::~SaveCsvEngine() {} APP_ERROR SaveCsvEngine::Init() { strPort0_ = engineName_ + "_" + std::to_string(engineId_) + "_0"; strPort1_ = engineName_ + "_" + std::to_string(engineId_) + "_1"; strPort2_ = engineName_ + "_" + std::to_string(engineId_) + "_2"; strResultPath_ = MyYaml::GetIns()->GetPathValue("gc_result_path"); strPoundNo_ = MyYaml::GetIns()->GetStringValue("atlas_poundno"); LogInfo << "SaveCsvEngine Init ok"; return APP_ERR_OK; } APP_ERROR SaveCsvEngine::DeInit() { LogInfo << "SaveCsvEngine DeInit ok"; return APP_ERR_OK; } /** * 保存合并后车厢的最优结果到CSV中 (该文件支持其web导入) * inParam : std::shared_ptr<Train> pTrain :列车信息 * outParam: * return : true/false */ bool SaveCsvEngine::SaveMergerCsv(std::shared_ptr<Train> pTrain) { //1. 创建保存路径 (固定路径/YYYY-MM-DD/hh-mm-ss/) std::string strTrainPath = strResultPath_ + pTrain->strTrainDate + "/" + pTrain->strTrainName + "/"; if (!MyUtils::getins()->CreateDirPath(strTrainPath)) { LogError << "iCarXH:" << pTrain->iCarXH << " train savecsv err"; return false; } //2. 保存csv std::string strCsvName = pTrain->strTrainDate + pTrain->strTrainName + std::string(".csv"); strCsvName = MyUtils::getins()->replace_all_distinct(strCsvName, std::string("-"), std::string("")); std::string strCsvPath = strTrainPath + strCsvName; 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 << "poundno" << ',' << "year" << ',' << "time" << ',' << "direction" << ',' << "speed" << ',' << "typeId" << ',' << "skipInterval" << ',' << "carxh" << ',' << "type" << ',' << "num" << ',' << "load" << ',' << "self" << ',' << "volume" << ',' << "volumesurface" << ',' << "change" << ',' << "numImgPath" << ',' << "proImgPath" << ',' << "videoStart" << ',' << "videoEnd" << ',' << "containerNo1" << ',' << "containerNo2" << ',' << "inspection" << ',' << "inspectionImg" << ',' << "containerImg_1" << ',' << "containerImg_2" << ',' << "startTime" << ',' << "endTime" << std::endl; } std::string strTime = pTrain->strTrainName; strTime = MyUtils::getins()->replace_all_distinct(strTime, std::string("-"), std::string(":")); ai_matrix::DataSourceConfig dataSourceConfig = MyYaml::GetIns()->GetDataSourceConfigById(pTrain->trainNum.iDataSource); //获取摄像机参数 char szCameraNo[4] = {0}; sprintf(szCameraNo, "%03d", pTrain->trainNum.iDataSource + 1); char szNumImgPath[64] = {0}; //车号最优图片路径 if (!pTrain->trainNum.strBestImg.empty()) { sprintf(szNumImgPath, "%03d/%s", pTrain->trainNum.iDataSource + 1, pTrain->trainNum.strBestImg.c_str()); } char szProImgPath[64] = {0}; //属性最优图片路径 if (!pTrain->trainPro.strBestImg.empty()) { sprintf(szProImgPath, "%03d/%s", pTrain->trainPro.iDataSource + 1, pTrain->trainPro.strBestImg.c_str()); } char szChkDateImgPath[64] = {0}; //定检期最优图片路径 if (!pTrain->chkDate.strBestImg.empty()) { sprintf(szChkDateImgPath, "%03