|
|
|
@ -1042,7 +1042,7 @@ int ImgCheckAnalysisy::CheckRun()
|
|
|
|
temerror.flen = (w > h ? w : h) * m_fImgage_Scale_X;
|
|
|
|
temerror.flen = (w > h ? w : h) * m_fImgage_Scale_X;
|
|
|
|
temerror.fbreadth = (w > h ? h : w) * m_fImgage_Scale_Y;
|
|
|
|
temerror.fbreadth = (w > h ? h : w) * m_fImgage_Scale_Y;
|
|
|
|
|
|
|
|
|
|
|
|
temerror.nconfig_qx_type = CONFIG_QX_NAME_support_offset;
|
|
|
|
temerror.nconfig_qx_type = CONFIG_QX_NAME_cell_ZJ_PianYi;
|
|
|
|
temerror.qx_name = CONFIG_QX_NAME_Names[temerror.nconfig_qx_type];
|
|
|
|
temerror.qx_name = CONFIG_QX_NAME_Names[temerror.nconfig_qx_type];
|
|
|
|
temerror.result = QX_RESULT_TYPE_NG;
|
|
|
|
temerror.result = QX_RESULT_TYPE_NG;
|
|
|
|
temerror.result_name = QX_RESULT_TYPE_Names[QX_RESULT_TYPE_NG];
|
|
|
|
temerror.result_name = QX_RESULT_TYPE_Names[QX_RESULT_TYPE_NG];
|
|
|
|
@ -1101,8 +1101,8 @@ int ImgCheckAnalysisy::CheckRun()
|
|
|
|
float h = roi.height;
|
|
|
|
float h = roi.height;
|
|
|
|
temerror.flen = (w > h ? w : h) * m_fImgage_Scale_X;
|
|
|
|
temerror.flen = (w > h ? w : h) * m_fImgage_Scale_X;
|
|
|
|
temerror.fbreadth = (w > h ? h : w) * m_fImgage_Scale_Y;
|
|
|
|
temerror.fbreadth = (w > h ? h : w) * m_fImgage_Scale_Y;
|
|
|
|
temerror.nconfig_qx_type = CONFIG_QX_NAME_handle_loss;
|
|
|
|
temerror.nconfig_qx_type = CONFIG_QX_NAME_cell_CGMo_QueShi;
|
|
|
|
temerror.qx_name = CONFIG_QX_NAME_Names[CONFIG_QX_NAME_handle_loss];
|
|
|
|
temerror.qx_name = CONFIG_QX_NAME_Names[CONFIG_QX_NAME_cell_CGMo_QueShi];
|
|
|
|
temerror.result = QX_RESULT_TYPE_NG;
|
|
|
|
temerror.result = QX_RESULT_TYPE_NG;
|
|
|
|
temerror.result_name = QX_RESULT_TYPE_Names[QX_RESULT_TYPE_NG];
|
|
|
|
temerror.result_name = QX_RESULT_TYPE_Names[QX_RESULT_TYPE_NG];
|
|
|
|
|
|
|
|
|
|
|
|
@ -1158,8 +1158,8 @@ int ImgCheckAnalysisy::CheckRun()
|
|
|
|
float th = tagRoi.size.height;
|
|
|
|
float th = tagRoi.size.height;
|
|
|
|
temerror.flen = (tw > th ? tw : th) * m_fImgage_Scale_X;
|
|
|
|
temerror.flen = (tw > th ? tw : th) * m_fImgage_Scale_X;
|
|
|
|
temerror.fbreadth = (tw > th ? th : tw) * m_fImgage_Scale_Y;
|
|
|
|
temerror.fbreadth = (tw > th ? th : tw) * m_fImgage_Scale_Y;
|
|
|
|
temerror.nconfig_qx_type = CONFIG_QX_NAME_cell_tag;
|
|
|
|
temerror.nconfig_qx_type = CONFIG_QX_NAME_cell_TBBQ;
|
|
|
|
temerror.qx_name = CONFIG_QX_NAME_Names[CONFIG_QX_NAME_cell_tag];
|
|
|
|
temerror.qx_name = CONFIG_QX_NAME_Names[CONFIG_QX_NAME_cell_TBBQ];
|
|
|
|
temerror.result = QX_RESULT_TYPE_NG;
|
|
|
|
temerror.result = QX_RESULT_TYPE_NG;
|
|
|
|
temerror.result_name = QX_RESULT_TYPE_Names[QX_RESULT_TYPE_NG];
|
|
|
|
temerror.result_name = QX_RESULT_TYPE_Names[QX_RESULT_TYPE_NG];
|
|
|
|
|
|
|
|
|
|
|
|
@ -2091,7 +2091,8 @@ int ImgCheckAnalysisy::AI_QX_Class_Thread()
|
|
|
|
ERROR_DOTS_BLOB_DATA *pblob = &blobs.blobTab[submitted];
|
|
|
|
ERROR_DOTS_BLOB_DATA *pblob = &blobs.blobTab[submitted];
|
|
|
|
if (pblob->ErrType == ERR_TYPE_2)
|
|
|
|
if (pblob->ErrType == ERR_TYPE_2)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
pblob->AIclasstype = CONFIG_QX_NAME_cell_ymhs;
|
|
|
|
// ERR_TYPE_2不参与分类,按默认AI类别(把手标记)处理
|
|
|
|
|
|
|
|
pblob->AIclasstype = CONFIG_QX_NAME_cell_CGMark;
|
|
|
|
submitted++;
|
|
|
|
submitted++;
|
|
|
|
completed++;
|
|
|
|
completed++;
|
|
|
|
continue;
|
|
|
|
continue;
|
|
|
|
@ -2135,50 +2136,23 @@ int ImgCheckAnalysisy::AI_QX_Class_Thread()
|
|
|
|
int temClass = result->cls_label;
|
|
|
|
int temClass = result->cls_label;
|
|
|
|
int cls_num = 0;
|
|
|
|
int cls_num = 0;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 分类模型label顺序:0-把手标记(CGMark) 1-补强板标记(BQBMark) 2-铜箔标记(TBMark)
|
|
|
|
switch (temClass)
|
|
|
|
switch (temClass)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
case 0:
|
|
|
|
case 0:
|
|
|
|
cls_num = AI_CLass_QX_NAME_aotudian;
|
|
|
|
cls_num = AI_CLass_QX_NAME_CGMark;
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
|
|
case 1:
|
|
|
|
case 1:
|
|
|
|
cls_num = AI_CLass_QX_NAME_other;
|
|
|
|
cls_num = AI_CLass_QX_NAME_BQBMark;
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
|
|
case 2:
|
|
|
|
case 2:
|
|
|
|
cls_num = AI_CLass_QX_NAME_line;
|
|
|
|
cls_num = AI_CLass_QX_NAME_TBMark;
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
case 3:
|
|
|
|
|
|
|
|
cls_num = AI_CLass_QX_NAME_zangwu;
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
case 4:
|
|
|
|
|
|
|
|
cls_num = AI_CLass_QX_NAME_dianzhuang;
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
case 5:
|
|
|
|
|
|
|
|
cls_num = AI_CLass_QX_NAME_posun;
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
case 6:
|
|
|
|
|
|
|
|
cls_num = AI_CLass_QX_NAME_xianwei;
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
case 7:
|
|
|
|
|
|
|
|
cls_num = AI_CLass_QX_NAME_shuizi;
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
case 8:
|
|
|
|
|
|
|
|
cls_num = AI_CLass_QX_NAME_danban;
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
case 9:
|
|
|
|
|
|
|
|
cls_num = AI_CLass_QX_NAME_fuchen;
|
|
|
|
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
|
|
default:
|
|
|
|
default:
|
|
|
|
cls_num = AI_CLass_QX_NAME_zangwu;
|
|
|
|
cls_num = AI_CLass_QX_NAME_CGMark;
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@ -2419,38 +2393,18 @@ int ImgCheckAnalysisy::DrawResult_Step_1()
|
|
|
|
int ImgCheckAnalysisy::AIClassTypeToConfigType(int nAIQXType)
|
|
|
|
int ImgCheckAnalysisy::AIClassTypeToConfigType(int nAIQXType)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
int resultError_type = CONFIG_QX_NAME_cell_aotudian;
|
|
|
|
// 只有主检测+分类的缺陷在映射表中;支架偏移/支架缺失/把手缺失(传统检出)、铜箔标签(标签检测)不走AI分类
|
|
|
|
|
|
|
|
int resultError_type = CONFIG_QX_NAME_cell_CGMark;
|
|
|
|
switch (nAIQXType)
|
|
|
|
switch (nAIQXType)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
case AI_CLass_QX_NAME_aotudian:
|
|
|
|
case AI_CLass_QX_NAME_CGMark:
|
|
|
|
resultError_type = CONFIG_QX_NAME_cell_aotudian;
|
|
|
|
resultError_type = CONFIG_QX_NAME_cell_CGMark;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case AI_CLass_QX_NAME_other:
|
|
|
|
|
|
|
|
resultError_type = CONFIG_QX_NAME_cell_other;
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
case AI_CLass_QX_NAME_line:
|
|
|
|
|
|
|
|
resultError_type = CONFIG_QX_NAME_cell_line;
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
case AI_CLass_QX_NAME_zangwu:
|
|
|
|
|
|
|
|
resultError_type = CONFIG_QX_NAME_cell_zangwu;
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
case AI_CLass_QX_NAME_dianzhuang:
|
|
|
|
|
|
|
|
resultError_type = CONFIG_QX_NAME_cell_dianzhuang;
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
case AI_CLass_QX_NAME_posun:
|
|
|
|
|
|
|
|
resultError_type = CONFIG_QX_NAME_cell_posun;
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
case AI_CLass_QX_NAME_xianwei:
|
|
|
|
|
|
|
|
resultError_type = CONFIG_QX_NAME_cell_xianwei;
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
case AI_CLass_QX_NAME_shuizi:
|
|
|
|
|
|
|
|
resultError_type = CONFIG_QX_NAME_cell_shuizi;
|
|
|
|
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
case AI_CLass_QX_NAME_danban:
|
|
|
|
case AI_CLass_QX_NAME_BQBMark:
|
|
|
|
resultError_type = CONFIG_QX_NAME_cell_danban;
|
|
|
|
resultError_type = CONFIG_QX_NAME_cell_BQBMark;
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
case AI_CLass_QX_NAME_fuchen:
|
|
|
|
case AI_CLass_QX_NAME_TBMark:
|
|
|
|
resultError_type = CONFIG_QX_NAME_cell_fuchen;
|
|
|
|
resultError_type = CONFIG_QX_NAME_cell_TBMark;
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
default:
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
|