From 3e51c2ea479495e63e99d73419f5307f77c0e5fd Mon Sep 17 00:00:00 2001 From: liusiyang Date: Wed, 22 Apr 2026 17:57:31 +0800 Subject: [PATCH] =?UTF-8?q?update=20=E5=90=8C=E6=AD=A5=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../include/ALLImgCheckAnalysisy.hpp | 6 ++++ AlgorithmModule/include/Product.h | 2 ++ AlgorithmModule/src/ALLImgCheckAnalysisy.cpp | 34 +++++++++++++++++-- AlgorithmModule/src/CameraCheckAnalysisy.cpp | 6 ++-- AlgorithmModule/src/CameraResult.cpp | 2 +- AlgorithmModule/src/Edge_Search.cpp | 2 +- AlgorithmModule/src/ImgCheckAnalysisy.cpp | 8 ++--- AlgorithmModule/src/Product.cpp | 2 +- 8 files changed, 50 insertions(+), 12 deletions(-) diff --git a/AlgorithmModule/include/ALLImgCheckAnalysisy.hpp b/AlgorithmModule/include/ALLImgCheckAnalysisy.hpp index 929aeaa..48fe697 100644 --- a/AlgorithmModule/include/ALLImgCheckAnalysisy.hpp +++ b/AlgorithmModule/include/ALLImgCheckAnalysisy.hpp @@ -122,6 +122,9 @@ private: int MergeShowImg(std::shared_ptr product); // 合并图片 + // 清理产品list + void Clear_m_ProductList(); + // 异常返回 int ErrorReturn(std::shared_ptr p); @@ -156,6 +159,9 @@ private: std::shared_ptr m_pdetlog; + // 当前检测产品的个数 + int m_CurProductIdx = 0; + std::queue> m_CheckResultList; // 检测结果 std::mutex mtx_CheckResult; // 互斥锁,用于保护数据队列 std::condition_variable CheckResult_cond; // 条件变量,用于同步生产者和消费者线程 diff --git a/AlgorithmModule/include/Product.h b/AlgorithmModule/include/Product.h index 03922b5..317d5b6 100644 --- a/AlgorithmModule/include/Product.h +++ b/AlgorithmModule/include/Product.h @@ -47,6 +47,8 @@ public: std::shared_ptr productBaseResult; // 图片是否都送完了。 bool bIsImgComplete = false; + // product使用计数 + int productUseCount = 0; // 日志 std::vector LogList; std::mutex mtx_CameraResultList; diff --git a/AlgorithmModule/src/ALLImgCheckAnalysisy.cpp b/AlgorithmModule/src/ALLImgCheckAnalysisy.cpp index 03849b0..dad41e3 100644 --- a/AlgorithmModule/src/ALLImgCheckAnalysisy.cpp +++ b/AlgorithmModule/src/ALLImgCheckAnalysisy.cpp @@ -545,9 +545,14 @@ int ALLImgCheckAnalysisy::PushInImg_New(std::shared_ptr p) strlog += "isnot exist"; //设置其他m_ProductList送图状态设置为结束 cout << "-------set m_ProductList other product to end-------" << endl ; + std::lock_guard lock(mtx_ProductList); for(auto &tem:m_ProductList){ tem->bIsImgComplete = true; } + if(-1 == p->Status) + { + return CHECK_ERROR_PushImg_ID_Error; + } } // 产品不存在 新建一个 @@ -557,13 +562,19 @@ int ALLImgCheckAnalysisy::PushInImg_New(std::shared_ptr p) { if (m_ProductList.size() > 50) { - + Clear_m_ProductList(); return CHECK_ERROR_PushImg_ListSize; } } strlog += " | create new product"; product = std::make_shared(); product->productBaseResult->strproductName = p->strImgProductID; + if (m_CurProductIdx > 999999) + { + m_CurProductIdx = 0; + } + product->productUseCount = m_CurProductIdx; + m_CurProductIdx++; m_ProductList.push_back(product); std::string strTimg = CheckUtil::getCurTimeHMS(); product->productBaseResult->detlog->bPrintStr = true; @@ -687,7 +698,26 @@ int ALLImgCheckAnalysisy::MergeShowImg(std::shared_ptr product) return 0; } - +void ALLImgCheckAnalysisy::Clear_m_ProductList(){ + int num = m_ProductList.size(); + string strlog = ""; + printf("******************\n\n m_ProductImgDetResultList %ld \n", m_ProductList.size()); + std::lock_guard lock(mtx_ProductList); + int idx = -1; + for (int i = 0; i < m_ProductList.size(); i++) + { + int sub = std::abs(m_CurProductIdx - m_ProductList.at(i)->productUseCount); + if (sub > 50) + { + // 删除指定位置的元素 + // m_ProductList.at(i)->productBaseResult->detlog->AddCheckstr(PrintLevel_0, "PushInImg", "%s Delete size > %d; m_CurProductIdx %d - nNotDetCount %d > 50", + // m_ProductList.at(i)->, + // m_ProductList.size(), m_CurProductIdx, + // m_ProductList.at(i)->productUseCount); + m_ProductList.erase(m_ProductList.begin() + i); + } + } +} int ALLImgCheckAnalysisy::Run() { diff --git a/AlgorithmModule/src/CameraCheckAnalysisy.cpp b/AlgorithmModule/src/CameraCheckAnalysisy.cpp index c144203..6593fd4 100644 --- a/AlgorithmModule/src/CameraCheckAnalysisy.cpp +++ b/AlgorithmModule/src/CameraCheckAnalysisy.cpp @@ -255,7 +255,7 @@ int CameraCheckAnalysisy::Detect_Images() } else { - printf("Cam Detect_Images %s ==================No send end\n", strBasic.c_str()); + // printf("Cam Detect_Images %s ==================No send end\n", strBasic.c_str()); } } } @@ -344,7 +344,7 @@ int CameraCheckAnalysisy::ResultParamJudge() long t2 = CheckUtil::getcurTime(); m_imageResultJudge.DrawResult(m_pCheck_Result->ImageALLDetResultList.at(imgidx)); long t3 = CheckUtil::getcurTime(); - m_pdetlog->AddCheckstr(PrintLevel_1, "ResultParamJudge", " det time %ld ms judge %ld draw %ld", t3 - t1, t2 - t1, t3 - t2); + // m_pdetlog->AddCheckstr(PrintLevel_1, "ResultParamJudge", " det time %ld ms judge %ld draw %ld", t3 - t1, t2 - t1, t3 - t2); // 把结果转成 json 保存。 用以复测 std::shared_ptr m_CheckResult_shareP = m_pCheck_Result->ImageALLDetResultList.at(imgidx)->result; @@ -767,7 +767,7 @@ int CameraCheckAnalysisy::CheckImgRun() m_pdetlog->bPrintStr = false; m_pdetlog->AddCheckstr(PrintLevel_1, "CheckImgRun", "Cam %s ------Product_Off_X_mm %f ", m_strcameraName.c_str(), m_AnalysisyConfig.commonCheckConfig.baseConfig.fProduct_Off_X_mm); - + m_pdetlog->bPrintStr = true; // 如果是未检测状态,则开始预处理 if (curcheckStep == Check_Step_NODet) { diff --git a/AlgorithmModule/src/CameraResult.cpp b/AlgorithmModule/src/CameraResult.cpp index f623d9a..9011e99 100644 --- a/AlgorithmModule/src/CameraResult.cpp +++ b/AlgorithmModule/src/CameraResult.cpp @@ -64,7 +64,7 @@ int CameraResult::AddDetImage(std::shared_ptr p) } } std::string strTimg = CheckUtil::getCurTimeHMS(); - detlog->bPrintStr = false; + detlog->bPrintStr = true; detlog->AddCheckstr(PrintLevel_0, "PushInImg", " product %s Cam %s add new image channel = %s sum img %ld %s", productBaseResult->strproductName.c_str(), cameraBaseResult->strCameraName.c_str(), imgResult->strChannel.c_str(), ImageALLDetResultList.size(), strTimg.c_str()); diff --git a/AlgorithmModule/src/Edge_Search.cpp b/AlgorithmModule/src/Edge_Search.cpp index 37cabd7..ce2d45d 100644 --- a/AlgorithmModule/src/Edge_Search.cpp +++ b/AlgorithmModule/src/Edge_Search.cpp @@ -38,7 +38,7 @@ int Edge_Search::Detect(const cv::Mat &detimg, DetConfigResult *pDetConfig, std: m_pdetlog = pDetConfig->pdetlog; if (pDetConfig->bDebugsaveImg) { - m_pdetlog->bPrintStr = false; + m_pdetlog->bPrintStr = true; } int re = 0; bool bdraw = pDetConfig->pEdgeROI->Use_DrawROI; diff --git a/AlgorithmModule/src/ImgCheckAnalysisy.cpp b/AlgorithmModule/src/ImgCheckAnalysisy.cpp index 0ba7216..78f49ad 100644 --- a/AlgorithmModule/src/ImgCheckAnalysisy.cpp +++ b/AlgorithmModule/src/ImgCheckAnalysisy.cpp @@ -423,7 +423,7 @@ int ImgCheckAnalysisy::CheckRun() { m_pdetlog->bPrintStr = true; } - m_pdetlog->bPrintStr = false; + m_pdetlog->bPrintStr = true; m_pdetlog->AddCheckstr(PrintLevel_0, "1、basic Info", "---------------------------1、basic Info---------------------------------"); m_pdetlog->AddCheckstr(PrintLevel_0, "Version", "%s", GetVersion().c_str()); @@ -441,9 +441,9 @@ int ImgCheckAnalysisy::CheckRun() m_strCurDetChannel = m_CheckResult_shareP->basicResult.strChannel; m_strCurDetCamChannel = m_pImageAllResult->cameraBaseResult->strCameraName + "_" + m_strCurDetChannel; - cout << "Version: " << GetVersion() << endl; - cout << "CameraName: " << m_pImageAllResult->cameraBaseResult->strCameraName << endl; - cout << "strChannel: " << m_CheckResult_shareP->basicResult.strChannel<< endl; + // cout << "Version: " << GetVersion() << endl; + // cout << "CameraName: " << m_pImageAllResult->cameraBaseResult->strCameraName << endl; + // cout << "strChannel: " << m_CheckResult_shareP->basicResult.strChannel<< endl; // 2、参数检查 int rec = ConfigCheck(DetImgInfo_shareP->img); diff --git a/AlgorithmModule/src/Product.cpp b/AlgorithmModule/src/Product.cpp index 767227e..3992ece 100644 --- a/AlgorithmModule/src/Product.cpp +++ b/AlgorithmModule/src/Product.cpp @@ -34,7 +34,7 @@ std::shared_ptr Product::GetCameraResult(std::string strcameraName return ptr; } } - productBaseResult->detlog->bPrintStr = false; + productBaseResult->detlog->bPrintStr = true; // 不存在,创建新的 CameraResult 并插入 map std::shared_ptr newResult = std::make_shared(); newResult->productBaseResult = productBaseResult;