Compare commits

..

No commits in common. 'c7b20f2c754011cdf9803b1c2c75c2b7f1298172' and 'df101943fe92b16699aab9e0cb627ca08e97f3b5' have entirely different histories.

@ -14,24 +14,24 @@ enum AI_CLass_QX_NAME_
{
AI_CLass_QX_NAME_PIN_PoSun, // PIN破损
AI_CLass_QX_NAME_PIN_QueShi, // PIN缺失
AI_CLass_QX_NAME_BTB_DuanLie, // BTB断裂
AI_CLass_QX_NAME_LianXi, // 连锡
AI_CLass_QX_NAME_QueXi, // 缺锡
AI_CLass_QX_NAME_YiWu, // 异物
AI_CLass_QX_NAME_C_BianXing, // C型卡口异常
AI_CLass_QX_NAME_Panel, // Panel
AI_CLass_QX_NAME_count,
};
// 缺陷项对应在参数中的名称
static const std::string AI_CLass_QX_NAME_Names[] =
{
"PIN_PoSun",
"PIN_QueShi",
"BTB_DuanLie",
"LianXi",
"QueXi",
"YiWu",
"C_BianXing",
"Panel",
};
#endif

@ -94,7 +94,6 @@ public:
{
int ncamId; // 相机ID
BaseCheckFunction *pBaseCheckFunction;
std::string strProductID; // 产品ID(存图文件名用)
std::string strChannel; // 通道
int nthresholdvalue; // 背景阈值
int nAIErodesize; // 边缘腐蚀强度
@ -117,7 +116,6 @@ public:
saveProcessImg = Save_Close;
bUseDrawRoi_Check = false;
drawRoi = cv::Rect(0, 0, 0, 0);
strProductID = "";
if (!drawMask.empty())
{
drawMask.release();

@ -286,7 +286,8 @@ private:
std::vector<cv::Rect> SmallRoiList;
std::string m_strRootPath_KK_cls;
std::string m_strRootPath_TA_cls;
std::string m_strRootPath_CA_cls;
std::string m_strSavePath_cls;
std::string m_strLastDate;

@ -59,7 +59,6 @@ public:
BaseCheckFunction *pBaseCheckFunction;
std::string strChannel;
std::string strProductID; // 产品ID(存图文件名用)
bool bSaveResultImg;
DetConfigResult()
{
@ -69,7 +68,6 @@ public:
{
pBaseCheckFunction = NULL;
strChannel = "";
strProductID = "";
bSaveResultImg = false;
}
};
@ -82,7 +80,6 @@ public:
private:
int InitModel_Pin();
int creatsavedir();
private:
bool m_bInitSucc; // 是否初始化成功
@ -92,12 +89,6 @@ private:
bool m_bshowimg;
cv::Mat showimg;
std::string m_strRootPath_Pin;
std::string m_strSavePath_Pin;
std::string m_strLastDate;
ImageStorage *m_pImageStorage;
std::shared_ptr<AIFactory> AI_Factory;
private:

@ -183,8 +183,8 @@ AI_Edge_Algin::AI_Edge_Algin(std::shared_ptr<DetLog> &log_ref)
m_bModelSucc = false;
m_bModel_Mark_Succ = false;
m_bshowimg = false;
m_strRootPath_Big = "/home/aidlux/BOE/Algin/KK/";
m_strRootPath_Mark = "/home/aidlux/BOE/MarkLine/KK/";
m_strRootPath_Big = "/home/aidlux/BOE/Algin/";
m_strRootPath_Mark = "/home/aidlux/BOE/MarkLine/";
creatsavedir();
std::string m_strSavePath;
@ -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) 的亮度一致)
@ -393,12 +387,19 @@ 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);
static int sdk = 0;
std::string str = m_strSavePath_Big + std::to_string(sdk) + "_" + pDetConfig->strChannel + "_Img.png";
int sr = m_pImageStorage->addImage(str, detImg);
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);
str = m_strSavePath_Big + std::to_string(sdk) + "_" + pDetConfig->strChannel + "_Img_mask.png";
int sr = m_pImageStorage->addImage(str, mask, true);
sdk++;
if (sdk > 99999)
{
sdk = 0;
/* code */
}
}
}

@ -797,9 +797,32 @@ int ImageResultJudge::DrawResult(std::shared_ptr<ImageAllResult> pImageResult)
draw_str->txtP = cv::Point(draw_qx->cp.x + r, draw_qx->cp.y - r);
draw_str->txtsize = 0.5;
draw_str->txtbackgroundk = txtbackgroundk;
cv::Rect srcroi = pqx->srcImgroi;
cv::Point srccp = cv::Point(srcroi.x + srcroi.width * .5, srcroi.y + srcroi.height * 0.5);
char buffer[128];
{
std::string text = std::to_string(pqx->idx) + ":" + pqx->strTypeName;
draw_str->strlist.push_back(text);
}
{
sprintf(buffer, " center:%d %d", srccp.x, srccp.y);
std::string text = buffer;
draw_str->strlist.push_back(text);
}
{
sprintf(buffer, " len %0.2f A: %0.2f ", pqx->len, pqx->area);
std::string text = buffer;
draw_str->strlist.push_back(text);
}
{
sprintf(buffer, " breadth %0.2f A: %0.2f ", pqx->breadth, pqx->area);
std::string text = buffer;
draw_str->strlist.push_back(text);
}
{
// 只绘制 id:缺陷code (缺陷名可能中文乱码, 用code替代)
std::string text = std::to_string(pqx->idx) + ":" + pqx->qx_Code;
sprintf(buffer, " E:%0.2f hj %0.2f", pqx->energy, pqx->hj);
std::string text = buffer;
draw_str->strlist.push_back(text);
}
sendTask(draw_str);

@ -40,7 +40,8 @@ ImgCheckAnalysisy::ImgCheckAnalysisy()
m_pbaseCheckFunction = &m_AnalysisyConfig.baseFunction;
m_strLastDate = "";
m_strRootPath_KK_cls = "/home/aidlux/BOE/Cls/KK/";
m_strRootPath_TA_cls = "/home/aidlux/BOE/Cls/TA/";
m_strRootPath_CA_cls = "/home/aidlux/BOE/Cls/CA/";
creatsavedir();
m_pImageStorage = ImageStorage::getInstance();
m_nConfigIdx = -1;
@ -201,10 +202,12 @@ int ImgCheckAnalysisy::creatsavedir()
return 0;
}
m_strLastDate = curDate;
m_strRootPath_KK_cls += m_strLastDate + "/";
m_strRootPath_TA_cls += m_strLastDate + "/";
m_strRootPath_CA_cls += m_strLastDate + "/";
for (int i = 0; i < AI_CLass_QX_NAME_count; i++)
{
CheckUtil::CreateDir(m_strRootPath_KK_cls + std::to_string(i) + "/");
CheckUtil::CreateDir(m_strRootPath_TA_cls + std::to_string(i) + "/");
CheckUtil::CreateDir(m_strRootPath_CA_cls + std::to_string(i) + "/");
}
return 0;
}
@ -1383,8 +1386,7 @@ int ImgCheckAnalysisy::ConfigCheck(cv::Mat img)
int ImgCheckAnalysisy::AI_Detect_Thread(const cv::Mat &img, cv::Mat &ResultImg)
{
// 依次使用多个检测模型,各模型输出 mask 取并集作为最终 outmask;
// Defect_QueXi 模型是否参与合并由基础参数 Merge_QueXi 开关控制
// 依次使用多个检测模型,各模型输出 mask 取并集作为最终 outmask
std::vector<std::shared_ptr<AIModel_Base>> pAIDetList;
pAIDetList.push_back(AI_Factory->Defect);
pAIDetList.push_back(AI_Factory->Defect_QueXi);
@ -1394,9 +1396,6 @@ int ImgCheckAnalysisy::AI_Detect_Thread(const cv::Mat &img, cv::Mat &ResultImg)
pAIDetNameList.push_back(AI_DET_MODEL_NAME_Defect);
pAIDetNameList.push_back(AI_DET_MODEL_NAME_QueXi);
// Defect_QueXi 模型是否参与最终结果并集(开关关闭时: 模型照常推理, 但结果不合并到 ResultImg)
bool bMerge_QueXi = (m_pbaseCheckFunction != NULL) && m_pbaseCheckFunction->Merge_QueXi.bOpen;
std::string strBaseLog = "AI_Detect";
m_pdetlog->AddCheckstr(PrintLevel_0, DET_LOG_LEVEL_3, strBaseLog, "AI_Detect Start");
@ -1435,9 +1434,6 @@ int ImgCheckAnalysisy::AI_Detect_Thread(const cv::Mat &img, cv::Mat &ResultImg)
std::shared_ptr<AIModel_Base> pAIDet = pAIDetList[m];
std::string strModelName = (m < pAIDetNameList.size()) ? pAIDetNameList[m] : std::string(AI_DET_MODEL_NAME_UnKnown);
// 当前模型的 mask 是否合并进最终结果: Defect 模型始终合并; Defect_QueXi 由 Merge_QueXi 开关控制
bool bMergeModel = (strModelName != AI_DET_MODEL_NAME_QueXi) || bMerge_QueXi;
int deal_image_width = pAIDet->input_0.width;
int deal_image_height = pAIDet->input_0.height;
if (deal_image_width <= 0 || deal_image_height <= 0)
@ -1490,29 +1486,19 @@ int ImgCheckAnalysisy::AI_Detect_Thread(const cv::Mat &img, cv::Mat &ResultImg)
{
cv::resize(modelMask, modelMaskFull, img.size(), 0, 0, cv::INTER_NEAREST);
if (bMergeModel)
{
// 多个模型的 mask 取并集
cv::bitwise_or(ResultImg, modelMaskFull, ResultImg);
// 当前模型自己的 mask 单独记录一份(只记录参与并集的模型, 保证残点来源追溯与结果一致)
// 当前模型自己的 mask 单独记录一份
cv::bitwise_or(modelMaskList[m], modelMaskFull, modelMaskList[m]);
}
else
{
// Merge_QueXi 开关关闭: 不合并、不推加速队列、不记录残点来源
m_pdetlog->AddCheckstr(PrintLevel_0, DET_LOG_LEVEL_3, strBaseLog,
" %s Merge_QueXi off, mask not merged (pixel num %d)",
strModelName.c_str(), cv::countNonZero(modelMaskFull));
}
}
// AI 检测残点图存图:每个模型的结果都存,并增加一级 模型名称 目录,
// 用以区分该残点是由哪个模型检出的
// 目录结构:/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/ZB_SOCKET/AI_Detect/" + strModelName + "/" + DetImgInfo_shareP->strImgProductID + "/";
CheckUtil::CreateDir(strSaveDir);
std::string strSavePath_in = strSaveDir + m_strCurDetChannel + "_in.png";
std::string strSavePath_out = strSaveDir + m_strCurDetChannel + "_out.png";
@ -1521,8 +1507,7 @@ int ImgCheckAnalysisy::AI_Detect_Thread(const cv::Mat &img, cv::Mat &ResultImg)
}
// 4、mask 结果放入队列,用于 AIMaskDet 加速 blob 计算(整图 ROI)
// 只推入参与并集的 mask, 保证行标志与最终结果 mask 一致
if (bMergeModel && !modelMaskFull.empty())
if (!modelMaskFull.empty())
{
std::shared_ptr<AIMulThreadRunBase::AITask> maskTask = std::make_shared<AIMulThreadRunBase::AITask>();
maskTask->id = static_cast<int>(m);
@ -1663,31 +1648,31 @@ int ImgCheckAnalysisy::AI_QX_Class_Thread()
break;
case 1:
cls_num = AI_CLass_QX_NAME_PIN_QueShi;
cls_num = AI_CLass_QX_NAME_BTB_DuanLie;
break;
case 2:
cls_num = AI_CLass_QX_NAME_BTB_DuanLie;
cls_num = AI_CLass_QX_NAME_LianXi;
break;
case 3:
cls_num = AI_CLass_QX_NAME_LianXi;
cls_num = AI_CLass_QX_NAME_QueXi;
break;
case 4:
cls_num = AI_CLass_QX_NAME_QueXi;
cls_num = AI_CLass_QX_NAME_YiWu;
break;
case 5:
cls_num = AI_CLass_QX_NAME_YiWu;
cls_num = AI_CLass_QX_NAME_C_BianXing;
break;
case 6:
cls_num = AI_CLass_QX_NAME_C_BianXing;
cls_num = AI_CLass_QX_NAME_Panel;
break;
default:
cls_num = AI_CLass_QX_NAME_count; // 无效类别, 不参与缺陷分析
cls_num = AI_CLass_QX_NAME_Panel;
break;
}
@ -1695,13 +1680,18 @@ int ImgCheckAnalysisy::AI_QX_Class_Thread()
// printf("AI Class num %d = %s %f\n", cls_num, strclassName.c_str(), result->cls_score);
// 分类存图 开启。
if (m_pbaseCheckFunction->saveImg.bSaveClsImg)
if (m_pbaseCheckFunction->saveImg.bSaveAlginImg)
{
std::string saveimgpaht = "";
if (m_strCurDetChannel == "TA")
{
saveimgpaht = m_strRootPath_KK_cls + std::to_string(cls_num) + "/" + std::to_string(CheckUtil::getcurTime()) + "_" + std::to_string(result->cls_score) + ".png";
saveimgpaht = m_strRootPath_TA_cls + std::to_string(cls_num) + "/" + std::to_string(CheckUtil::getcurTime()) + "_" + std::to_string(result->cls_score) + ".png";
}
else
{
saveimgpaht = m_strRootPath_CA_cls + std::to_string(cls_num) + "/" + std::to_string(CheckUtil::getcurTime()) + "_" + std::to_string(result->cls_score) + ".png";
}
{
@ -1956,9 +1946,6 @@ int ImgCheckAnalysisy::AIClassTypeToConfigType(int nAIQXType)
case AI_CLass_QX_NAME_PIN_PoSun:
resultError_type = CONFIG_QX_NAME_PIN_PoSun;
break;
case AI_CLass_QX_NAME_PIN_QueShi:
resultError_type = CONFIG_QX_NAME_PIN_QueShi;
break;
case AI_CLass_QX_NAME_BTB_DuanLie:
resultError_type = CONFIG_QX_NAME_BTB_DuanLie;
break;
@ -1974,6 +1961,9 @@ int ImgCheckAnalysisy::AIClassTypeToConfigType(int nAIQXType)
case AI_CLass_QX_NAME_C_BianXing:
resultError_type = CONFIG_QX_NAME_C_BianXing;
break;
case AI_CLass_QX_NAME_Panel:
resultError_type = CONFIG_QX_NAME_Panel;
break;
default:
break;
}
@ -1999,7 +1989,6 @@ int ImgCheckAnalysisy::Pin_Qx_Det(const cv::Mat &img)
m_Edge_DetConfig.Init();
m_Edge_DetConfig.strChannel = m_strCurDetChannel;
m_Edge_DetConfig.strProductID = DetImgInfo_shareP->strImgProductID;
m_Edge_DetConfig.pBaseCheckFunction = m_pbaseCheckFunction;
m_Edge_DetConfig.bSaveResultImg = false;
@ -2943,7 +2932,6 @@ int ImgCheckAnalysisy::AI_Edge(const cv::Mat &img, cv::RotatedRect &outerRoi, cv
config.bSaveResultImg = true;
}
config.strChannel = DetImgInfo_shareP->strChannel;
config.strProductID = DetImgInfo_shareP->strImgProductID;
config.pBaseCheckFunction = m_pbaseCheckFunction;
int re = m_pAI_Edge_Algin.Detect(img, &config, m_pEdge_Align_Result);
if (re != 0)

@ -10,10 +10,6 @@ Pin_QX_Det::Pin_QX_Det(std::shared_ptr<DetLog> &log_ref)
{
std::string m_strSavePath;
AI_Factory = AIFactory::GetInstance();
m_strLastDate = "";
m_strRootPath_Pin = "/home/aidlux/BOE/Algin/Pin/";
m_pImageStorage = ImageStorage::getInstance();
creatsavedir();
}
Pin_QX_Det::~Pin_QX_Det()
{
@ -31,12 +27,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)
{
@ -51,20 +41,6 @@ int Pin_QX_Det::GetPinMask(const cv::Mat &img, DetConfigResult *pDetConfig, Mat
return re123;
}
// 参数 Align_Pin_Save 打开时, 保存Pin脚定位模型的输入/输出图(异步存图, 不阻塞检测)
// 输入图存未做通道转化(灰度化)之前的图; 文件名首位用产品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);
}
}
if (pDetConfig->bSaveResultImg)
{
cv::imwrite(pDetConfig->strChannel +"_pin_" +"in.png", detImg);
@ -73,16 +49,3 @@ int Pin_QX_Det::GetPinMask(const cv::Mat &img, DetConfigResult *pDetConfig, Mat
return 0;
}
int Pin_QX_Det::creatsavedir()
{
std::string curDate = CheckUtil::getCurrentDate();
if (curDate == m_strLastDate)
{
return 0;
}
m_strLastDate = curDate;
m_strSavePath_Pin = m_strRootPath_Pin + curDate + "/";
CheckUtil::CreateDir(m_strSavePath_Pin);
return 0;
}

@ -1060,9 +1060,9 @@ struct Base_Function_SaveImg
{
bool bOpen; // 是否开启
bool bSaveMarkImg; // mark 存图
bool bSaveClsImg; // 分类 存图
bool bSaveAlginImg; // 定位 存图
bool bSavePinImg; // pin 存图
bool bSaveAlginImg; // 分类 存图
bool bSaveAIDetImg; // AI 检测残点图 存图(每个模型单独一级目录)
Base_Function_SaveImg()
@ -1072,7 +1072,7 @@ struct Base_Function_SaveImg
void Init()
{
bOpen = false;
bSavePinImg = false;
bSaveMarkImg = false;
bSaveClsImg = false;
bSaveAlginImg = false;
bSaveAIDetImg = false;
@ -1082,21 +1082,21 @@ struct Base_Function_SaveImg
{
this->bOpen = tem.bOpen;
this->bSavePinImg = tem.bSavePinImg;
this->bSaveMarkImg = tem.bSaveMarkImg;
this->bSaveClsImg = tem.bSaveClsImg;
this->bSaveAlginImg = tem.bSaveAlginImg;
this->bSaveAIDetImg = tem.bSaveAIDetImg;
}
void print(std::string str)
{
printf("%s>>bOpen %d bSavePinImg %d bSaveClsImg %d bSaveAlginImg %d bSaveAIDetImg %d \n", str.c_str(),
bOpen, bSavePinImg, bSaveClsImg, bSaveAlginImg, bSaveAIDetImg);
printf("%s>>bOpen %d bSaveMarkImg %d bSaveClsImg %d bSaveAlginImg %d bSaveAIDetImg %d \n", str.c_str(),
bOpen, bSaveMarkImg, bSaveClsImg, bSaveAlginImg, bSaveAIDetImg);
}
std::string GetInfo(std::string str)
{
char buffer[256];
sprintf(buffer, "%s>>bOpen %d bSavePinImg %d bSaveClsImg %d bSaveAlginImg %d bSaveAIDetImg %d \n", str.c_str(),
bOpen, bSavePinImg, bSaveClsImg, bSaveAlginImg, bSaveAIDetImg);
sprintf(buffer, "%s>>bOpen %d bSaveMarkImg %d bSaveClsImg %d bSaveAlginImg %d bSaveAIDetImg %d \n", str.c_str(),
bOpen, bSaveMarkImg, bSaveClsImg, bSaveAlginImg, bSaveAIDetImg);
std::string str123 = buffer;
return str123;
}
@ -1141,38 +1141,6 @@ struct Big_NG
return str123;
}
};
struct Base_Function_Merge_QueXi
{
bool bOpen;
Base_Function_Merge_QueXi()
{
Init();
}
void Init()
{
bOpen = false;
}
void copy(Base_Function_Merge_QueXi tem)
{
this->bOpen = tem.bOpen;
}
void print(std::string str)
{
printf("%s>>bOpen %d \n", str.c_str(),
bOpen);
}
std::string GetInfo(std::string str)
{
char buffer[256];
sprintf(buffer, "%s>>bOpen %d \n", str.c_str(),
bOpen);
std::string str123 = buffer;
return str123;
}
};
// 基础检测功能 大缺陷 NG
struct Base_Function_BigNG
{
@ -1274,7 +1242,6 @@ struct BaseCheckFunction
Base_Function_ALign ALign_Config;
Base_Function_Pin_Det pinDet;
Base_Function_SaveImg saveImg;
Base_Function_Merge_QueXi Merge_QueXi;
Base_Function_BigNG bigNG;
BaseCheckFunction()
{
@ -1285,7 +1252,6 @@ struct BaseCheckFunction
ALign_Config.Init();
pinDet.Init();
saveImg.Init();
Merge_QueXi.Init();
bigNG.Init();
}
void copy(BaseCheckFunction tem)
@ -1293,7 +1259,6 @@ struct BaseCheckFunction
this->ALign_Config.copy(tem.ALign_Config);
this->pinDet.copy(tem.pinDet);
this->saveImg.copy(tem.saveImg);
this->Merge_QueXi.copy(tem.Merge_QueXi);
this->bigNG.copy(tem.bigNG);
}
void print(std::string str)
@ -1302,7 +1267,6 @@ struct BaseCheckFunction
ALign_Config.print("ALign_Config");
pinDet.print("pinDet");
saveImg.print("saveImg");
Merge_QueXi.print("Merge_QueXi");
bigNG.print("bigNG");
}
std::string GetInfo(std::string str)
@ -1311,7 +1275,6 @@ struct BaseCheckFunction
str123 += ALign_Config.GetInfo("ALign_Config");
str123 += pinDet.GetInfo("pinDet");
str123 += saveImg.GetInfo("saveImg");
str123 += Merge_QueXi.GetInfo("Merge_QueXi");
str123 += bigNG.GetInfo("bigNG");
// str123 += "\n";
return str123;

@ -825,7 +825,7 @@ int BaseFuntonConfigJson::GetFunction(Json::Value value)
// _config.pinDet.print("pinDet");
// getchar();
}
if ("KK_Image_Save" == strCode)
if ("Det_Image_Save" == strCode)
{
auto value_f = value;
// std::cout << value_f << std::endl;
@ -834,6 +834,10 @@ int BaseFuntonConfigJson::GetFunction(Json::Value value)
if (_config.saveImg.bOpen)
{
if (value_f["form"]["SaveImg_Config"]["Mark_Save"])
{
_config.saveImg.bSaveMarkImg = value_f["form"]["SaveImg_Config"]["Mark_Save"].asBool();
}
if (value_f["form"]["SaveImg_Config"]["Cls_Save"])
{
_config.saveImg.bSaveClsImg = value_f["form"]["SaveImg_Config"]["Cls_Save"].asBool();
@ -842,10 +846,6 @@ int BaseFuntonConfigJson::GetFunction(Json::Value value)
{
_config.saveImg.bSaveAlginImg = value_f["form"]["SaveImg_Config"]["Align_Big_Save"].asBool();
}
if (value_f["form"]["SaveImg_Config"]["Align_Pin_Save"])
{
_config.saveImg.bSavePinImg = value_f["form"]["SaveImg_Config"]["Align_Pin_Save"].asBool();
}
if (value_f["form"]["SaveImg_Config"]["AI_Det_Save"])
{
_config.saveImg.bSaveAIDetImg = value_f["form"]["SaveImg_Config"]["AI_Det_Save"].asBool();
@ -858,14 +858,6 @@ int BaseFuntonConfigJson::GetFunction(Json::Value value)
// _config.pinDet.print("pinDet");
// getchar();
}
if ("bMerge_QueXi" == strCode)
{
auto value_f = value;
// std::cout << value_f << std::endl;
// getchar();
_config.Merge_QueXi.bOpen = value_f["isOpen"].asBool();
}
if ("Big_NG" == strCode)
{
auto value_f = value;

Loading…
Cancel
Save