From c4747748a0c75d0a9f0d85074f09a943e126aea1 Mon Sep 17 00:00:00 2001 From: liusiyang Date: Wed, 19 Aug 2026 09:07:53 +0800 Subject: [PATCH] =?UTF-8?q?feat=20=E6=B7=BB=E5=8A=A0=E5=AE=8F=E5=AE=9A?= =?UTF-8?q?=E4=B9=89=E6=8E=A7=E5=88=B6=E7=BB=93=E6=9E=9C=E5=9B=BE=E8=BF=94?= =?UTF-8?q?=E5=9B=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../include/CheckErrorCodeDefine.hpp | 2 +- AlgorithmModule/src/AI_Edge_QX_Det.cpp | 10 ++++++ AlgorithmModule/src/CameraCheckAnalysisy.cpp | 2 +- AlgorithmModule/src/ImageResultJudge.cpp | 10 +++--- AlgorithmModule/src/ImgCheckAnalysisy.cpp | 33 ++++++++++++++++--- 5 files changed, 45 insertions(+), 12 deletions(-) diff --git a/AlgorithmModule/include/CheckErrorCodeDefine.hpp b/AlgorithmModule/include/CheckErrorCodeDefine.hpp index 3b72020..f89a19d 100644 --- a/AlgorithmModule/include/CheckErrorCodeDefine.hpp +++ b/AlgorithmModule/include/CheckErrorCodeDefine.hpp @@ -26,7 +26,7 @@ // resize 图片的 宽度 #define RESIZE_IMAGE_WIDTH 1680 -#define AI_Time +// #define SAVE_RESIMG enum TEM_IMG_IDX_ { diff --git a/AlgorithmModule/src/AI_Edge_QX_Det.cpp b/AlgorithmModule/src/AI_Edge_QX_Det.cpp index b0429cc..6b8a6ba 100644 --- a/AlgorithmModule/src/AI_Edge_QX_Det.cpp +++ b/AlgorithmModule/src/AI_Edge_QX_Det.cpp @@ -206,6 +206,16 @@ int AI_Edge_QX_Det::Detect(const cv::Mat &img, cv::Mat &detmask, DetConfig *pDet continue; } + if (bdege || nRuntype != 0) + { + std::string strSaveDir = "/home/aidlux/BOE/FOG/AI_Edge_Detect/"; + CheckUtil::CreateDir(strSaveDir); + std::string roi_ext = "[" + std::to_string(r.x) + "," + std::to_string(r.y) + "]"; + std::string strSavePath_in = strSaveDir + pDetConfig->strCamChannel + "_" + roi_ext + "_edge_in.png"; + std::string strSavePath_out = strSaveDir + pDetConfig->strCamChannel + "_" + roi_ext + "_edge_out.png"; + cv::imwrite(strSavePath_in, detimg); + cv::imwrite(strSavePath_out, outMask); + } bool isAllZero = true; if (cv::countNonZero(outMask) > 0) { diff --git a/AlgorithmModule/src/CameraCheckAnalysisy.cpp b/AlgorithmModule/src/CameraCheckAnalysisy.cpp index 868db5b..82e47b9 100644 --- a/AlgorithmModule/src/CameraCheckAnalysisy.cpp +++ b/AlgorithmModule/src/CameraCheckAnalysisy.cpp @@ -361,7 +361,7 @@ int CameraCheckAnalysisy::ResultParamJudge() long t1 = CheckUtil::getcurTime(); int re = m_imageResultJudge.MergeResult(m_pCheck_Result->ImageALLDetResultList.at(imgidx), ptemre); long t2 = CheckUtil::getcurTime(); - #ifdef AI_Time + #ifdef SAVE_RESIMG m_imageResultJudge.DrawResult(m_pCheck_Result->ImageALLDetResultList.at(imgidx)); #endif long t3 = CheckUtil::getcurTime(); diff --git a/AlgorithmModule/src/ImageResultJudge.cpp b/AlgorithmModule/src/ImageResultJudge.cpp index 211dd2b..3b58018 100644 --- a/AlgorithmModule/src/ImageResultJudge.cpp +++ b/AlgorithmModule/src/ImageResultJudge.cpp @@ -597,7 +597,7 @@ int ImageResultJudge::ResultJudge(std::shared_ptr pImageResult) // CheckUtil::printROI(CutRoi, "CutRoi"); cv::Size sz = cv::Size(QX_SAMLLIMG_WIDTH, QX_SAMLLIMG_HEIGHT); - #ifdef AI_Time + #ifdef SAVE_RESIMG if (pImageResult->detImg.channels() == 1) { cv::cvtColor(pImageResult->detImg(CutRoi), tem.srcImg, cv::COLOR_GRAY2BGR); @@ -652,7 +652,7 @@ int ImageResultJudge::ResultJudge(std::shared_ptr pImageResult) m_CheckResult_shareP->nresult = nqx_type; } - #ifdef AI_Time + #ifdef SAVE_RESIMG GetAIDetImg(pImageResult, pCenter, tem.AI_in_Img, tem.AI_out_img); #endif m_CheckResult_shareP->qxImageResult.push_back(tem); @@ -665,7 +665,7 @@ int ImageResultJudge::ResultJudge(std::shared_ptr pImageResult) m_CheckResult_shareP->nYS_result = nqx_type; } - #ifdef AI_Time + #ifdef SAVE_RESIMG GetAIDetImg(pImageResult, pCenter, tem.AI_in_Img, tem.AI_out_img); #endif @@ -844,7 +844,7 @@ int ImageResultJudge::MergeResult(std::shared_ptr pImageResult, cv::Rect CutRoi = GetCutRoi(roi, pImageResult->detImg); cv::Size sz = cv::Size(QX_SAMLLIMG_WIDTH, QX_SAMLLIMG_HEIGHT); - #ifdef AI_Time + #ifdef SAVE_RESIMG if (pImageResult->detImg.channels() == 1) { cv::cvtColor(pImageResult->detImg(CutRoi), tem.srcImg, cv::COLOR_GRAY2BGR); @@ -915,7 +915,7 @@ int ImageResultJudge::MergeResult(std::shared_ptr pImageResult, { m_CheckResult_shareP->nresult = nqx_type; } - #ifdef AI_Time + #ifdef SAVE_RESIMG GetAIDetImg(pImageResult, pCenter, tem.AI_in_Img, tem.AI_out_img); #endif m_CheckResult_shareP->qxImageResult.push_back(tem); diff --git a/AlgorithmModule/src/ImgCheckAnalysisy.cpp b/AlgorithmModule/src/ImgCheckAnalysisy.cpp index 62eea98..4b78bb2 100644 --- a/AlgorithmModule/src/ImgCheckAnalysisy.cpp +++ b/AlgorithmModule/src/ImgCheckAnalysisy.cpp @@ -526,6 +526,7 @@ int ImgCheckAnalysisy::CheckRun() m_pdetlog->AddCheckstr(PrintLevel_0, "4、BQ Detect", "-------------------------BQ AI Detect--------%ld ms-------\n", t_BQ_e - t_BQ_s); } +#ifdef SAVE_RESIMG m_CheckResult_shareP->resultMaskImg = m_pImageAllResult->qx_DetAIResult->AI_MaskImg; // 将BQ标签的AI mask合并到结果mask中 @@ -537,6 +538,7 @@ int ImgCheckAnalysisy::CheckRun() cv::bitwise_or(m_CheckResult_shareP->resultMaskImg, bqMask, m_CheckResult_shareP->resultMaskImg); } } +#endif // cv::imwrite("dddddddd.png", m_pImageAllResult->qx_DetAIResult->AI_MaskImg); // if (!m_pImageAllResult->qx_DetAIResult->AI_MaskImg.empty()) @@ -2968,9 +2970,15 @@ int ImgCheckAnalysisy::AI_Detect_QX() pDetAIResult->blobDetParam->AIMaskImgBLobQueue.push(temAIresult); } } - // AI检测残点图存图:仅保存有残点(mask非零)的结果,最多保存前10个 - if (DetImgInfo_shareP->bDebugsaveImg && cv::countNonZero(AIresult) > 0 && nSaveCnt < 10 && (m_strCurDetChannel == "L0" || m_strCurDetChannel == "Down-Particle")) + // AI检测残点图存图 + if (DetImgInfo_shareP->bDebugsaveImg) { + bool bNeedSave = false; + std::string roi_ext = "[" + std::to_string(result->roi.x) + "," + std::to_string(result->roi.y) + "]"; + + bNeedSave = true; + + if (bNeedSave && !AIresult.empty()) std::string roi_ext = "[" + std::to_string(result->roi.x) + "," + std::to_string(result->roi.y) + "]"; std::string strSaveDir = "/home/aidlux/BOE/FOG/AI_Detect/" + DetImgInfo_shareP->strImgProductID + "/"; CheckUtil::CreateDir(strSaveDir); @@ -3281,6 +3289,7 @@ int ImgCheckAnalysisy::ResizeImg() float fw = RESIZE_IMAGE_WIDTH * 1.0f / m_pImageAllResult->detImg.cols; sz.height = int(m_pImageAllResult->detImg.rows * fw); +#ifdef SAVE_RESIMG cv::resize(m_pImageAllResult->detImg, m_pImageAllResult->resultImg, sz); // 需要绘制屏蔽区 @@ -3303,6 +3312,12 @@ int ImgCheckAnalysisy::ResizeImg() } m_CheckResult_shareP->resultimg = m_pImageAllResult->resultImg; + +#else + m_pImageAllResult->fscale_detToresult_x = RESIZE_IMAGE_WIDTH * 1.0f / m_pImageAllResult->detImg.cols; + m_pImageAllResult->fscale_detToresult_y = sz.height * 1.0f / m_pImageAllResult->detImg.rows; +#endif + m_pdetlog->AddCheckstr(PrintLevel_1, "ResizeImg", "showImg size [w %d,h %d]-> show img [w %d,h %d] ", m_CutRoi.width, m_CutRoi.height, sz.width, sz.height); return 0; @@ -3470,6 +3485,12 @@ int ImgCheckAnalysisy::Edge_Det() int ImgCheckAnalysisy::DrawResult_Step_1() { m_pdetlog->AddCheckstr(PrintLevel_0, "DrawResult_Step_1", "=======start"); +#ifndef SAVE_RESIMG + if (m_CheckResult_shareP->resultimg.empty()) + { + return 0; + } +#endif // std::cout << m_pBasicConfig->bDrawPreRoi << std::endl; if (m_pBasicConfig->bDrawPreRoi) { @@ -4484,11 +4505,13 @@ int ImgCheckAnalysisy::ImgPreDet() creatsavedir(); } - m_CheckResult_shareP->cutSrcimg = m_pImageAllResult->detImg; - ResizeImg(); - +#ifdef SAVE_RESIMG + m_CheckResult_shareP->cutSrcimg = m_pImageAllResult->detImg; m_pImageAllResult->fscale_detToresult_x = m_pImageAllResult->resultImg.cols * 1.0f / m_pImageAllResult->detImg.cols; m_pImageAllResult->fscale_detToresult_y = m_pImageAllResult->resultImg.rows * 1.0f / m_pImageAllResult->detImg.rows; +#else + ResizeImg(); +#endif return 0; }