From fe9fdcd7816b0917ebbb0bd9aa17db9587786996 Mon Sep 17 00:00:00 2001 From: liusiyang Date: Wed, 14 Oct 2026 20:54:45 +0800 Subject: [PATCH] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=E5=AD=98=E5=9B=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- AlgorithmModule/src/AI_Edge_Algin.cpp | 19 +++++------------- AlgorithmModule/src/CheckUtil.cpp | 6 +++--- AlgorithmModule/src/ImgCheckAnalysisy.cpp | 16 ++++++++++----- AlgorithmModule/src/Pin_QX_Det.cpp | 24 ++++++++--------------- 4 files changed, 27 insertions(+), 38 deletions(-) diff --git a/AlgorithmModule/src/AI_Edge_Algin.cpp b/AlgorithmModule/src/AI_Edge_Algin.cpp index da93db4..35cf600 100644 --- a/AlgorithmModule/src/AI_Edge_Algin.cpp +++ b/AlgorithmModule/src/AI_Edge_Algin.cpp @@ -364,12 +364,6 @@ int AI_Edge_Algin::Get_Edge(int AIModel_type, const cv::Mat &img, DetConfig *pDe cout << "imgSize: " << img.size() << ", " << "detImgSize: " << detImg.size() << ", " << "szSize: " << sz << endl; cv::resize(img, detImg, sz); - // 存图用: 通道转换(灰度化)之前的模型输入图(未开启存图时不克隆, 节省时间/内存) - cv::Mat saveInImg; - if (pDetConfig->pBaseCheckFunction->saveImg.bSaveAlginImg) - { - saveInImg = detImg.clone(); - } int re = 0; cv::Mat mask; // 模型输入要求单通道;原图为彩色时按 BGR 顺序转灰度(与 imread(path,0) 的亮度一致) @@ -392,14 +386,11 @@ int AI_Edge_Algin::Get_Edge(int AIModel_type, const cv::Mat &img, DetConfig *pDe if (pDetConfig->pBaseCheckFunction->saveImg.bSaveAlginImg) { - creatsavedir(); - std::string str = m_strSavePath_Big + pDetConfig->strProductID + "_" + pDetConfig->strChannel + "_" + std::to_string(AIModel_type) + "_Img.png"; - int sr = m_pImageStorage->addImage(str, saveInImg); - if (sr == 0) - { - str = m_strSavePath_Big + pDetConfig->strProductID + "_" + pDetConfig->strChannel + "_" + std::to_string(AIModel_type) + "_Img_mask.png"; - m_pImageStorage->addImage(str, mask, true); - } + std::string cur_time_s = CheckUtil::getCurTimeHMS(); + std::string strSaveDir = "/home/aidlux/BOE/AI_Detect/" + pDetConfig->strProductID + "/"; + CheckUtil::CreateDir(strSaveDir); + std::string strSavePath_out = strSaveDir + cur_time_s + "_" + pDetConfig->strChannel + "_" + std::to_string(AIModel_type) + "_Align_out.png"; + CheckUtil::SaveImgAsync(strSavePath_out, mask); } if (m_pDetConfig->bSaveResultImg) diff --git a/AlgorithmModule/src/CheckUtil.cpp b/AlgorithmModule/src/CheckUtil.cpp index b85f9aa..f1a38a9 100644 --- a/AlgorithmModule/src/CheckUtil.cpp +++ b/AlgorithmModule/src/CheckUtil.cpp @@ -93,9 +93,9 @@ std::string CheckUtil::getCurTimeHMS() int millisec = tv.tv_usec / 1000; // 微秒转毫秒 std::ostringstream oss; - oss << std::setfill('0') << std::setw(2) << time_info->tm_hour << ":" - << std::setfill('0') << std::setw(2) << time_info->tm_min << ":" - << std::setfill('0') << std::setw(2) << time_info->tm_sec << "." + oss << std::setfill('0') << std::setw(2) << time_info->tm_hour << "-" + << std::setfill('0') << std::setw(2) << time_info->tm_min << "-" + << std::setfill('0') << std::setw(2) << time_info->tm_sec << "-" << std::setfill('0') << std::setw(3) << millisec; return oss.str(); // 返回格式 "HH:MM:SS.mmm" diff --git a/AlgorithmModule/src/ImgCheckAnalysisy.cpp b/AlgorithmModule/src/ImgCheckAnalysisy.cpp index f7f6490..c1baccb 100644 --- a/AlgorithmModule/src/ImgCheckAnalysisy.cpp +++ b/AlgorithmModule/src/ImgCheckAnalysisy.cpp @@ -1556,6 +1556,7 @@ int ImgCheckAnalysisy::ConfigCheck(cv::Mat img) int ImgCheckAnalysisy::AI_Detect_Thread(const cv::Mat &img, cv::Mat &ResultImg) { + std::string cur_time_s = CheckUtil::getCurTimeHMS(); // 依次使用多个检测模型,各模型输出 mask 取并集作为最终 outmask; // Defect_QueXi 模型是否参与合并由基础参数 Merge_QueXi 开关控制 std::vector> pAIDetList; @@ -1685,12 +1686,10 @@ int ImgCheckAnalysisy::AI_Detect_Thread(const cv::Mat &img, cv::Mat &ResultImg) // 目录结构:/home/aidlux/BOE/ZB_SOCKET/AI_Detect/<模型名称>/<产品ID>/ if (m_pbaseCheckFunction->saveImg.bSaveAIDetImg && !modelMaskFull.empty()) { - std::string strSaveDir = "/home/aidlux/BOE/AI_Detect/KK/" + strModelName + "/" + DetImgInfo_shareP->strImgProductID + "/"; + std::string strSaveDir = "/home/aidlux/BOE/AI_Detect/" + DetImgInfo_shareP->strImgProductID + "/"; CheckUtil::CreateDir(strSaveDir); - std::string strSavePath_in = strSaveDir + m_strCurDetChannel + "_in.png"; - std::string strSavePath_out = strSaveDir + m_strCurDetChannel + "_out.png"; - cv::imwrite(strSavePath_in, detInputImg); - cv::imwrite(strSavePath_out, modelMaskFull); + std::string strSavePath_out = strSaveDir + cur_time_s + "_" + m_strCurDetChannel + "_" + strModelName + "_out.png"; + CheckUtil::SaveImgAsync(strSavePath_out, modelMaskFull); } // 4、mask 结果放入队列,用于 AIMaskDet 加速 blob 计算(整图 ROI) @@ -1745,6 +1744,13 @@ int ImgCheckAnalysisy::AI_Detect_Thread(const cv::Mat &img, cv::Mat &ResultImg) m_pdetlog->AddCheckstr(PrintLevel_0, DET_LOG_LEVEL_3, strBaseLog, "AI_Detect End"); + if (m_pbaseCheckFunction->saveImg.bSaveAIDetImg ) + { + std::string strSaveDir = "/home/aidlux/BOE/AI_Detect/" + DetImgInfo_shareP->strImgProductID + "/"; + CheckUtil::CreateDir(strSaveDir); + std::string strSavePath_in = strSaveDir + cur_time_s + "_" + m_strCurDetChannel + "_in.png"; + CheckUtil::SaveImgAsync(strSavePath_in, m_CheckResult_shareP->cutSrcimg); + } // 临时存图 if (DetImgInfo_shareP->bsaveProcessImg) { diff --git a/AlgorithmModule/src/Pin_QX_Det.cpp b/AlgorithmModule/src/Pin_QX_Det.cpp index fa0df2e..cea1a64 100644 --- a/AlgorithmModule/src/Pin_QX_Det.cpp +++ b/AlgorithmModule/src/Pin_QX_Det.cpp @@ -31,12 +31,6 @@ int Pin_QX_Det::GetPinMask(const cv::Mat &img, DetConfigResult *pDetConfig, Mat cout << "imgSize: " << img.size() << ", " << "detImgSize: " << detImg.size() << ", " << "szSize: " << sz << endl; cv::resize(img, detImg, sz); - // 存图用: 通道转换(灰度化)之前的模型输入图(未开启存图时不克隆, 节省时间/内存) - cv::Mat saveInImg; - if (pDetConfig->pBaseCheckFunction != NULL && pDetConfig->pBaseCheckFunction->saveImg.bSavePinImg) - { - saveInImg = detImg.clone(); - } int re = 0; if (detImg.channels() != 1) { @@ -55,20 +49,18 @@ int Pin_QX_Det::GetPinMask(const cv::Mat &img, DetConfigResult *pDetConfig, Mat // 输入图存未做通道转化(灰度化)之前的图; 文件名首位用产品ID if (pDetConfig->pBaseCheckFunction != NULL && pDetConfig->pBaseCheckFunction->saveImg.bSavePinImg) { - creatsavedir(); - std::string str = m_strSavePath_Pin + pDetConfig->strProductID + "_" + pDetConfig->strChannel + "_pin_in.png"; - int sr = m_pImageStorage->addImage(str, saveInImg); - if (sr == 0) - { - str = m_strSavePath_Pin + pDetConfig->strProductID + "_" + pDetConfig->strChannel + "_pin_out_mask.png"; - m_pImageStorage->addImage(str, mask, true); - } + std::string cur_time_s = CheckUtil::getCurTimeHMS(); + std::string strSaveDir = "/home/aidlux/BOE/AI_Detect/" + pDetConfig->strProductID + "/"; + CheckUtil::CreateDir(strSaveDir); + std::string strSavePath_out = strSaveDir + cur_time_s + "_" + pDetConfig->strChannel + "_pin_out.png"; + CheckUtil::SaveImgAsync(strSavePath_out, mask); + } if (pDetConfig->bSaveResultImg) { - cv::imwrite(pDetConfig->strChannel +"_pin_" +"in.png", detImg); - cv::imwrite(pDetConfig->strChannel +"_pin_" +"out_mask.png", mask); + CheckUtil::SaveImgAsync(pDetConfig->strChannel +"_pin_" +"in.png", detImg); + CheckUtil::SaveImgAsync(pDetConfig->strChannel +"_pin_" +"out_mask.png", mask); } return 0;