diff --git a/AlgorithmModule/include/QX_Analysis.h b/AlgorithmModule/include/QX_Analysis.h index 9287104..d54a798 100644 --- a/AlgorithmModule/include/QX_Analysis.h +++ b/AlgorithmModule/include/QX_Analysis.h @@ -15,6 +15,7 @@ enum QX_ANALYSIS_NAME QX_ANALYSIS_Scratch, // 划伤 QX_ANALYSIS_LINE, // 线类 QX_ANALYSIS_MTX, // MTX + QX_ANALYSIS_Dirty, // 脏污 QX_ANALYSIS_ALL, // MTX&异物 QX_ANALYSIS_COUNT, }; @@ -26,6 +27,7 @@ static const std::string QX_ANALYSIS_NAME_Names[] = "Scratch", "LINE", "MTX", + "Dirty", "POL_Cell&MTX"}; // 预处理参数 diff --git a/AlgorithmModule/src/AI_Edge_QX_Det.cpp b/AlgorithmModule/src/AI_Edge_QX_Det.cpp index ec293f7..5f249ea 100644 --- a/AlgorithmModule/src/AI_Edge_QX_Det.cpp +++ b/AlgorithmModule/src/AI_Edge_QX_Det.cpp @@ -208,13 +208,22 @@ int AI_Edge_QX_Det::Detect(const cv::Mat &img, cv::Mat &detmask, DetConfig *pDet } 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); + std::string res_dir = "ok"; + if (cv::countNonZero(outMask) > 0) + { + res_dir = "ng"; + } + if (!detimg.empty() && !outMask.empty()) + { + std::string strSaveDir = "/home/aidlux/BOE/FOG/AI_Edge_Detect/" + res_dir + "/"; + 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; diff --git a/AlgorithmModule/src/ImageResultJudge.cpp b/AlgorithmModule/src/ImageResultJudge.cpp index 10e60a6..31220dc 100644 --- a/AlgorithmModule/src/ImageResultJudge.cpp +++ b/AlgorithmModule/src/ImageResultJudge.cpp @@ -1752,6 +1752,11 @@ int ImageResultJudge::ConfigTypeToQXAnalysis(int nconfigType) case CONFIG_QX_NAME_MTX: QXAnalysis_type = QX_ANALYSIS_MTX; // MTX break; + case CONFIG_QX_NAME_Dirty_L0: + case CONFIG_QX_NAME_Dirty_L1: + case CONFIG_QX_NAME_Dirty_L2: + QXAnalysis_type = QX_ANALYSIS_Dirty; // 脏污 + break; // case CONFIG_QX_NAME_Broken_line: // QXAnalysis_type = QX_ANALYSIS_ALL, // MTX&异物 // break; diff --git a/AlgorithmModule/src/QX_Merge_Analysis.cpp b/AlgorithmModule/src/QX_Merge_Analysis.cpp index 3702942..1a6dcdd 100644 --- a/AlgorithmModule/src/QX_Merge_Analysis.cpp +++ b/AlgorithmModule/src/QX_Merge_Analysis.cpp @@ -139,6 +139,11 @@ int QX_Merge_Analysis::ConfigTypeToQXAnalysis(int nconfigType) case CONFIG_QX_NAME_MTX: QXAnalysis_type = QX_ANALYSIS_MTX; // MTX break; + case CONFIG_QX_NAME_Dirty_L0: + case CONFIG_QX_NAME_Dirty_L1: + case CONFIG_QX_NAME_Dirty_L2: + QXAnalysis_type = QX_ANALYSIS_Dirty; // 脏污 + break; // case CONFIG_QX_NAME_Broken_line: // QXAnalysis_type = QX_ANALYSIS_ALL, // MTX&异物 // break; @@ -378,7 +383,7 @@ int QX_Merge_Analysis::StartAnalysis() // 分析每一个缺陷类型 for (int i = 0; i < QX_ANALYSIS_COUNT; i++) { - if (QX_ANALYSIS_POL_CELL != i && QX_ANALYSIS_AD != i && QX_ANALYSIS_MTX != i && QX_ANALYSIS_Scratch != i && QX_ANALYSIS_LINE != i) + if (QX_ANALYSIS_POL_CELL != i && QX_ANALYSIS_AD != i && QX_ANALYSIS_MTX != i && QX_ANALYSIS_Scratch != i && QX_ANALYSIS_LINE != i && QX_ANALYSIS_Dirty != i) { m_pMergedetlog->AddCheckstr(PrintLevel_0, 3, "Num And Dis Judge", "== %d 11", i); continue;