feat 脏污添加数量距离分析

dev_heyuan
liusiyang 3 months ago
parent 7c0dea2fac
commit 479f62af40

@ -15,6 +15,7 @@ enum QX_ANALYSIS_NAME
QX_ANALYSIS_Scratch, // 划伤 QX_ANALYSIS_Scratch, // 划伤
QX_ANALYSIS_LINE, // 线类 QX_ANALYSIS_LINE, // 线类
QX_ANALYSIS_MTX, // MTX QX_ANALYSIS_MTX, // MTX
QX_ANALYSIS_Dirty, // 脏污
QX_ANALYSIS_ALL, // MTX&异物 QX_ANALYSIS_ALL, // MTX&异物
QX_ANALYSIS_COUNT, QX_ANALYSIS_COUNT,
}; };
@ -26,6 +27,7 @@ static const std::string QX_ANALYSIS_NAME_Names[] =
"Scratch", "Scratch",
"LINE", "LINE",
"MTX", "MTX",
"Dirty",
"POL_Cell&MTX"}; "POL_Cell&MTX"};
// 预处理参数 // 预处理参数

@ -208,7 +208,14 @@ int AI_Edge_QX_Det::Detect(const cv::Mat &img, cv::Mat &detmask, DetConfig *pDet
} }
if (bdege || nRuntype != 0) if (bdege || nRuntype != 0)
{ {
std::string strSaveDir = "/home/aidlux/BOE/FOG/AI_Edge_Detect/"; 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); CheckUtil::CreateDir(strSaveDir);
std::string roi_ext = "[" + std::to_string(r.x) + "," + std::to_string(r.y) + "]"; 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_in = strSaveDir + pDetConfig->strCamChannel + "_" + roi_ext + "_edge_in.png";
@ -216,6 +223,8 @@ int AI_Edge_QX_Det::Detect(const cv::Mat &img, cv::Mat &detmask, DetConfig *pDet
cv::imwrite(strSavePath_in, detimg); cv::imwrite(strSavePath_in, detimg);
cv::imwrite(strSavePath_out, outMask); cv::imwrite(strSavePath_out, outMask);
} }
}
// 边缘检测存图 // 边缘检测存图
bool isAllZero = true; bool isAllZero = true;
if (cv::countNonZero(outMask) > 0) if (cv::countNonZero(outMask) > 0)

@ -1752,6 +1752,11 @@ int ImageResultJudge::ConfigTypeToQXAnalysis(int nconfigType)
case CONFIG_QX_NAME_MTX: case CONFIG_QX_NAME_MTX:
QXAnalysis_type = QX_ANALYSIS_MTX; // MTX QXAnalysis_type = QX_ANALYSIS_MTX; // MTX
break; 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: // case CONFIG_QX_NAME_Broken_line:
// QXAnalysis_type = QX_ANALYSIS_ALL, // MTX&异物 // QXAnalysis_type = QX_ANALYSIS_ALL, // MTX&异物
// break; // break;

@ -139,6 +139,11 @@ int QX_Merge_Analysis::ConfigTypeToQXAnalysis(int nconfigType)
case CONFIG_QX_NAME_MTX: case CONFIG_QX_NAME_MTX:
QXAnalysis_type = QX_ANALYSIS_MTX; // MTX QXAnalysis_type = QX_ANALYSIS_MTX; // MTX
break; 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: // case CONFIG_QX_NAME_Broken_line:
// QXAnalysis_type = QX_ANALYSIS_ALL, // MTX&异物 // QXAnalysis_type = QX_ANALYSIS_ALL, // MTX&异物
// break; // break;
@ -378,7 +383,7 @@ int QX_Merge_Analysis::StartAnalysis()
// 分析每一个缺陷类型 // 分析每一个缺陷类型
for (int i = 0; i < QX_ANALYSIS_COUNT; i++) 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); m_pMergedetlog->AddCheckstr(PrintLevel_0, 3, "Num And Dis Judge", "== %d 11", i);
continue; continue;

Loading…
Cancel
Save