@ -839,7 +839,7 @@ int QX_Merge_Analysis::Analysis_AD(ALL_Qx_DataList *pALLTypeqxList, int qx_idx)
" %d %s 2S: cur[A %0.2f L %0.2f] parm[A %0.2f L %0.2f] " ,
" %d %s 2S: cur[A %0.2f L %0.2f] parm[A %0.2f L %0.2f] " ,
j , pQXChannelList - > channel_name . c_str ( ) ,
j , pQXChannelList - > channel_name . c_str ( ) ,
pQXChannelList - > qxList [ j ] . area , pQXChannelList - > qxList [ j ] . length ,
pQXChannelList - > qxList [ j ] . area , pQXChannelList - > qxList [ j ] . length ,
pAd_checkParma - > S_standard_2s . area , pAd_checkParma - > S_standard_ 1 s. len ) ;
pAd_checkParma - > S_standard_2s . area , pAd_checkParma - > S_standard_ 2 s. len ) ;
}
}
else
else
{
{
@ -847,7 +847,7 @@ int QX_Merge_Analysis::Analysis_AD(ALL_Qx_DataList *pALLTypeqxList, int qx_idx)
" %d %s 1S: cur[A %0.2f L %0.2f] parm[A %0.2f L %0.2f] " ,
" %d %s 1S: cur[A %0.2f L %0.2f] parm[A %0.2f L %0.2f] " ,
j , pQXChannelList - > channel_name . c_str ( ) ,
j , pQXChannelList - > channel_name . c_str ( ) ,
pQXChannelList - > qxList [ j ] . area , pQXChannelList - > qxList [ j ] . length ,
pQXChannelList - > qxList [ j ] . area , pQXChannelList - > qxList [ j ] . length ,
pAd_checkParma - > S_standard_ 2 s. area , pAd_checkParma - > S_standard_1s . len ) ;
pAd_checkParma - > S_standard_ 1 s. area , pAd_checkParma - > S_standard_1s . len ) ;
s_det_value = 1 ;
s_det_value = 1 ;
}
}
if ( s_det_value > = s_param_value )
if ( s_det_value > = s_param_value )
@ -1137,7 +1137,6 @@ int QX_Merge_Analysis::Analysis_AD(ALL_Qx_DataList *pALLTypeqxList, int qx_idx)
int QX_Merge_Analysis : : Analysis_AD_Bind ( ALL_Qx_DataList * pALLTypeqxList , int qx_idx )
int QX_Merge_Analysis : : Analysis_AD_Bind ( ALL_Qx_DataList * pALLTypeqxList , int qx_idx )
{
{
AD_list . clear ( ) ;
if ( ! m_pbaseCheckFunction )
if ( ! m_pbaseCheckFunction )
{
{
return 1 ;
return 1 ;
@ -1149,7 +1148,38 @@ int QX_Merge_Analysis::Analysis_AD_Bind(ALL_Qx_DataList *pALLTypeqxList, int qx_
int check_s_Num = 0 ;
int check_s_Num = 0 ;
int s_param_value = - 1 ;
int s_param_value = - 1 ;
int s_param_num = 0 ;
int s_param_num = 0 ;
// 遍历每个通道,找到开启的 进行分析。
bool bana_num = false ;
bool bana_dis = false ;
bool bana_S = false ;
if ( pAd_checkParma - > analysis_num . bOpen )
{
bana_num = true ;
}
if ( pAd_checkParma - > analysis_dis . bOpen )
{
bana_dis = true ;
}
if ( pAd_checkParma - > analysis_s . bOpen )
{
bana_S = true ;
}
m_pMergedetlog - > AddCheckstr ( PrintLevel_1 , 3 , " Analysis_AD_Bind " , " start bOpen %d num %d dis %d S %d " ,
pAd_checkParma - > bOpen , bana_num , bana_dis , bana_S ) ;
/* 获取绑定通道 */
vector < string > main_channel_2s = pAd_checkParma - > analysis_bind . main_channel_2s ;
vector < string > second_channel_2s = pAd_checkParma - > analysis_bind . second_channel_2s ;
vector < string > main_channel_3s = pAd_checkParma - > analysis_bind . main_channel_3s ;
vector < string > second_channel_3s = pAd_checkParma - > analysis_bind . second_channel_3s ;
m_pMergedetlog - > AddCheckstr ( PrintLevel_2 , 3 , " Analysis_AD_Bind " , " bind main_2s %d second_2s %d main_3s %d second_3s %d " ,
( int ) main_channel_2s . size ( ) , ( int ) second_channel_2s . size ( ) , ( int ) main_channel_3s . size ( ) , ( int ) second_channel_3s . size ( ) ) ;
/* 获取主次通道的缺陷列表 */
vector < QX_channel_List > main_channel_s_qxList ;
vector < QX_channel_List > second_channel_s_qxList ;
for ( int i = 0 ; i < pALLTypeqxList - > channelqxList . size ( ) ; i + + )
for ( int i = 0 ; i < pALLTypeqxList - > channelqxList . size ( ) ; i + + )
{
{
QX_channel_List * pQXChannelList = & pALLTypeqxList - > channelqxList [ i ] ;
QX_channel_List * pQXChannelList = & pALLTypeqxList - > channelqxList [ i ] ;
@ -1164,243 +1194,198 @@ int QX_Merge_Analysis::Analysis_AD_Bind(ALL_Qx_DataList *pALLTypeqxList, int qx_
" channel %s AD Check is close " , pQXChannelList - > channel_name . c_str ( ) ) ;
" channel %s AD Check is close " , pQXChannelList - > channel_name . c_str ( ) ) ;
continue ;
continue ;
}
}
bool bana_num = false ;
bool bana_dis = false ;
bool bana_S = false ;
if ( pAd_checkParma - > analysis_num . bOpen )
{
bana_num = true ;
}
if ( pAd_checkParma - > analysis_dis . bOpen )
{
bana_dis = true ;
}
if ( pAd_checkParma - > analysis_s . bOpen )
{
bana_S = true ;
}
{
{
pQXChannelList - > pChannelDetlog - > AddCheckstr ( PrintLevel_2 , 3 , " Analysis_AD " , " NUM --> %s Param num check %d dis check %d S check %d " ,
pQXChannelList - > pChannelDetlog - > AddCheckstr ( PrintLevel_2 , 3 , " Analysis_AD " , " NUM --> %s Param num check %d dis check %d S check %d " ,
pQXChannelList - > channel_name . c_str ( ) , bana_num , bana_dis , bana_S ) ;
pQXChannelList - > channel_name . c_str ( ) , bana_num , bana_dis , bana_S ) ;
}
}
if ( ! bana_num & & ! bana_dis & & ! bana_S )
{
string cur_channel_name = pQXChannelList - > channel_name ;
continue ;
}
if ( std : : find ( main_channel_2s . begin ( ) , main_channel_2s . end ( ) , cur_channel_name ) ! = main_channel_2s . end ( ) | |
std : : find ( main_channel_3s . begin ( ) , main_channel_3s . end ( ) , cur_channel_name ) ! = main_channel_3s . end ( ) )
{
main_channel_s_qxList . push_back ( pALLTypeqxList - > channelqxList [ i ] ) ;
}
if ( std : : find ( second_channel_2s . begin ( ) , second_channel_2s . end ( ) , cur_channel_name ) ! = second_channel_2s . end ( ) | |
std : : find ( second_channel_3s . begin ( ) , second_channel_3s . end ( ) , cur_channel_name ) ! = second_channel_3s . end ( ) )
{
second_channel_s_qxList . push_back ( pALLTypeqxList - > channelqxList [ i ] ) ;
}
}
for ( int j = 0 ; j < pQXChannelList - > qxList . size ( ) ; j + + )
m_pMergedetlog - > AddCheckstr ( PrintLevel_2 , 3 , " Analysis_AD_Bind " , " main_channel %d second_channel %d " ,
{
( int ) main_channel_s_qxList . size ( ) , ( int ) second_channel_s_qxList . size ( ) ) ;
if ( pQXChannelList - > qxList [ j ] . area > = pAd_checkParma - > S_standard_1s . area & &
pQXChannelList - > qxList [ j ] . length > = pAd_checkParma - > S_standard_1s . len )
/* 画面分析 */
AD_list_bind . clear ( ) ;
for ( int i_main = 0 ; i_main < main_channel_s_qxList . size ( ) ; i_main + + )
{
string main_channel_name = main_channel_s_qxList [ i_main ] . channel_name ;
QX_channel_List * pQXChannelList_main = & main_channel_s_qxList [ i_main ] ;
vector < AD_Channel_BD_Info_ > tmp_main_qxInfo_all ;
// 遍历主通道cur_channel_name通道的缺陷
for ( int j_main = 0 ; j_main < pQXChannelList_main - > qxList . size ( ) ; j_main + + )
{
AD_Channel_BD_Info_ tmp_main_qxInfo ; // 主通道单个缺陷
if ( pQXChannelList_main - > qxList [ j_main ] . area > = pAd_checkParma - > S_standard_1s . area & &
pQXChannelList_main - > qxList [ j_main ] . length > = pAd_checkParma - > S_standard_1s . len )
{
{
}
}
else
else
{
{
continue ;
continue ;
}
}
tmp_main_qxInfo . roi = pQXChannelList_main - > qxList [ j_main ] . product_roi ;
tmp_main_qxInfo . location_product_mm = pQXChannelList_main - > qxList [ j_main ] . pLocation_Product_mm ;
tem_AD_QX_Info tem_AD_qx ; // 暗点信息
/*单画面*/
tem_AD_qx . channelidx = i ;
tem_AD_qx . qxidx = j ;
int s_det_value = 0 ;
// 当前通道 要参与s标准分析
// 当前通道 要参与s标准分析
if ( pAd_checkParma - > analysis_s . bOpen )
if ( pAd_checkParma - > analysis_s . bOpen )
{
{
s_param_num = pAd_checkParma - > analysis_s . Check_s_Num ;
s_param_num = pAd_checkParma - > analysis_s . Check_s_Num ;
s_param_value = pAd_checkParma - > analysis_s . Check_s_Value ;
s_param_value = pAd_checkParma - > analysis_s . Check_s_Value ;
if ( pQXChannelList - > qxList [ j ] . area > = pAd_checkParma - > S_standard_3s . area & &
if ( pQXChannelList _main - > qxList [ j _main ] . area > = pAd_checkParma - > S_standard_3s . area & &
pQXChannelList - > qxList [ j ] . length > = pAd_checkParma - > S_standard_3s . len )
pQXChannelList _main - > qxList [ j _main ] . length > = pAd_checkParma - > S_standard_3s . len )
{
{
s_det_valu e = 3 ;
tmp_main_qxInfo. s_typ e = 3 ;
pQXChannelList - > pChannelDetlog - > AddCheckstr ( PrintLevel_3 , 3 , " add AD " ,
pQXChannelList _main - > pChannelDetlog - > AddCheckstr ( PrintLevel_3 , 3 , " add AD " ,
" %d %s 3S: cur[A %0.2f L %0.2f] parm[A %0.2f L %0.2f] " ,
" %d %s 3S: cur[A %0.2f L %0.2f] parm[A %0.2f L %0.2f] " ,
j , pQXChannelList - > channel_name . c_str ( ) ,
j _main , pQXChannelList _main - > channel_name . c_str ( ) ,
pQXChannelList - > qxList [ j ] . area , pQXChannelList - > qxList [ j ] . length ,
pQXChannelList _main - > qxList [ j _main ] . area , pQXChannelList _main - > qxList [ j _main ] . length ,
pAd_checkParma - > S_standard_3s . area , pAd_checkParma - > S_standard_3s . len ) ;
pAd_checkParma - > S_standard_3s . area , pAd_checkParma - > S_standard_3s . len ) ;
}
}
else if ( pQXChannelList - > qxList [ j ] . area > = pAd_checkParma - > S_standard_2s . area & &
else if ( pQXChannelList _main - > qxList [ j _main ] . area > = pAd_checkParma - > S_standard_2s . area & &
pQXChannelList - > qxList [ j ] . length > = pAd_checkParma - > S_standard_2s . len )
pQXChannelList _main - > qxList [ j _main ] . length > = pAd_checkParma - > S_standard_2s . len )
{
{
s_det_valu e = 2 ;
tmp_main_qxInfo. s_typ e = 2 ;
pQXChannelList - > pChannelDetlog - > AddCheckstr ( PrintLevel_3 , 3 , " add AD " ,
pQXChannelList _main - > pChannelDetlog - > AddCheckstr ( PrintLevel_3 , 3 , " add AD " ,
" %d %s 2S: cur[A %0.2f L %0.2f] parm[A %0.2f L %0.2f] " ,
" %d %s 2S: cur[A %0.2f L %0.2f] parm[A %0.2f L %0.2f] " ,
j , pQXChannelList - > channel_name . c_str ( ) ,
j _main , pQXChannelList _main - > channel_name . c_str ( ) ,
pQXChannelList - > qxList [ j ] . area , pQXChannelList - > qxList [ j ] . length ,
pQXChannelList _main - > qxList [ j _main ] . area , pQXChannelList _main - > qxList [ j _main ] . length ,
pAd_checkParma - > S_standard_2s . area , pAd_checkParma - > S_standard_ 1 s. len ) ;
pAd_checkParma - > S_standard_2s . area , pAd_checkParma - > S_standard_ 2 s. len ) ;
}
}
else
else
{
{
pQXChannelList - > pChannelDetlog - > AddCheckstr ( PrintLevel_3 , 3 , " add AD " ,
pQXChannelList _main - > pChannelDetlog - > AddCheckstr ( PrintLevel_3 , 3 , " add AD " ,
" %d %s 1S: cur[A %0.2f L %0.2f] parm[A %0.2f L %0.2f] " ,
" %d %s 1S: cur[A %0.2f L %0.2f] parm[A %0.2f L %0.2f] " ,
j , pQXChannelList - > channel_name . c_str ( ) ,
j_main , pQXChannelList_main - > channel_name . c_str ( ) ,
pQXChannelList - > qxList [ j ] . area , pQXChannelList - > qxList [ j ] . length ,
pQXChannelList_main - > qxList [ j_main ] . area , pQXChannelList_main - > qxList [ j_main ] . length ,
pAd_checkParma - > S_standard_2s . area , pAd_checkParma - > S_standard_1s . len ) ;
pAd_checkParma - > S_standard_1s . area , pAd_checkParma - > S_standard_1s . len ) ;
s_det_value = 1 ;
tmp_main_qxInfo . s_type = 1 ;
}
if ( s_det_value > = s_param_value )
{
check_s_Num + + ;
}
}
}
}
cv : : Rect roi = pQXChannelList - > qxList [ j ] . product_roi ;
cv : : Rect roi_main = pQXChannelList_main - > qxList [ j_main ] . product_roi ;
int list_idx = - 1 ;
int channel_s = 0 ;
int roi_expand = ( round ) ( pAd_checkParma - > analysis_iou . AD_Expand ) ;
int roi_expand = ( round ) ( pAd_checkParma - > analysis_iou . AD_Expand ) ;
bool bnew_add = true ;
roi_main = cv : : Rect ( roi_main . x - roi_expand , roi_main . y - roi_expand , roi_main . width + roi_expand * 2 , roi_main . height + roi_expand * 2 ) ;
for ( int idx = 0 ; idx < AD_list . size ( ) ; idx + + )
{
cv : : Rect tem_roi ( AD_list . at ( idx ) . roi . x - roi_expand , AD_list . at ( idx ) . roi . y - roi_expand , AD_list . at ( idx ) . roi . width + 2 * roi_expand , AD_list . at ( idx ) . roi . height + 2 * roi_expand ) ;
cv : : Rect tem_roi2 ( roi . x - roi_expand , roi . y - roi_expand , roi . width + 2 * roi_expand , roi . height + 2 * roi_expand ) ;
float fiou = CheckUtil : : CalIoU ( AD_list . at ( idx ) . roi , roi ) ;
m_pMergedetlog - > AddCheckstr ( PrintLevel_3 , 3 , " CalIoU " ,
" roi1 %s roi2 %s expand %d iou %f " ,
CheckUtil : : GetRectString ( AD_list . at ( idx ) . roi ) . c_str ( ) ,
CheckUtil : : GetRectString ( roi ) . c_str ( ) ,
roi_expand , fiou ) ;
if ( fiou > pAd_checkParma - > analysis_iou . AD_IOU )
{
list_idx = idx ;
}
}
// 在list已存在。
if ( list_idx > = 0 )
{
AD_list . at ( list_idx ) . num + + ;
AD_list . at ( list_idx ) . numIdxList . push_back ( tem_AD_qx ) ;
channel_s = AD_list . at ( list_idx ) . num ;
if ( s_det_value = = 1 )
{
AD_list . at ( list_idx ) . num_1s + + ;
}
else if ( s_det_value = = 2 )
{
AD_list . at ( list_idx ) . num_2s + + ;
AD_list . at ( list_idx ) . num_2sIdxList . push_back ( tem_AD_qx ) ;
}
else
{
AD_list . at ( list_idx ) . num_3s + + ;
AD_list . at ( list_idx ) . num_3sIdxList . push_back ( tem_AD_qx ) ;
}
bnew_add = false ;
}
else
{ // 在list不存在。
AD_Channel_Info_ tem ;
tem . roi = roi ;
tem . location_product_mm = pQXChannelList - > qxList [ j ] . pLocation_Product_mm ;
tem . num = 1 ;
channel_s = 1 ;
tem . fdis = 99999999999 ;
tem . numIdxList . push_back ( tem_AD_qx ) ;
// 遍历次通道
for ( int i_second = 0 ; i_second < second_channel_s_qxList . size ( ) ; i_second + + )
if ( s_det_value = = 1 )
{
tem . num_1s + + ;
}
else if ( s_det_value = = 2 )
{
tem . num_2s + + ;
tem . num_2sIdxList . push_back ( tem_AD_qx ) ;
}
else
{
tem . num_3s + + ;
tem . num_3sIdxList . push_back ( tem_AD_qx ) ;
}
AD_list . push_back ( tem ) ;
// 如果要参与数量统计
if ( bana_num )
{
product_AD_num + + ;
}
}
m_pMergedetlog - > AddCheckstr ( PrintLevel_2 , 3 , " AD RGBL255 " , " AD list size %ld; channel %s blob idx %d,new_add %d ,A %f len %f p %d %d " ,
AD_list . size ( ) , pQXChannelList - > channel_name . c_str ( ) , j , bnew_add , pQXChannelList - > qxList [ j ] . area ,
pQXChannelList - > qxList [ j ] . length , roi . x , roi . y ) ;
pQXChannelList - > pChannelDetlog - > AddCheckstr ( PrintLevel_2 , 3 , " Analysis_AD " ,
" %d %s AD list size %ld product_AD_num Num %d; cur channel num = %d;cur S = %ds; param :%ds num %d;->S check_s_Num = %d " ,
j , pQXChannelList - > channel_name . c_str ( ) , AD_list . size ( ) ,
product_AD_num , channel_s , s_det_value , s_param_value , s_param_num , check_s_Num ) ;
}
}
float min_dis = 9999999999 ;
// 求最小距离
if ( true )
{
for ( int ad_i = 0 ; ad_i < AD_list . size ( ) ; ad_i + + )
{
for ( int ad_j = 0 ; ad_j < AD_list . size ( ) ; ad_j + + )
{
{
if ( ad_i = = ad_j )
string second_channel_name = second_channel_s_qxList [ i_second ] . channel_name ;
if ( second_channel_name = = main_channel_name )
{
{
continue ;
continue ;
}
}
// double dis = DistanceBetweenRectCenters(AD_list.at(ad_i).roi, AD_list.at(ad_j).roi,
QX_channel_List * pQXChannelList_second = & second_channel_s_qxList [ i_second ] ;
// 1,
// 遍历次通道second_channel_name通道的缺陷
// 1);
for ( int j_second = 0 ; j_second < pQXChannelList_second - > qxList . size ( ) ; j_second + + )
float dis = CheckUtil : : calDis ( AD_list . at ( ad_i ) . location_product_mm , AD_list . at ( ad_j ) . location_product_mm ) ;
if ( dis < AD_list . at ( ad_i ) . fdis )
{
{
AD_list . at ( ad_i ) . fdis = dis ;
if ( pQXChannelList_second - > qxList [ j_second ] . area > = pAd_checkParma - > S_standard_1s . area & &
AD_list . at ( ad_i ) . dist_idx = ad_j ;
pQXChannelList_second - > qxList [ j_second ] . length > = pAd_checkParma - > S_standard_1s . len )
if ( dis < min_dis )
{
{
min_dis = dis ;
}
}
}
else
{
continue ;
}
cv : : Rect roi_second = pQXChannelList_second - > qxList [ j_second ] . product_roi ;
roi_second = cv : : Rect ( roi_second . x - roi_expand , roi_second . y - roi_expand , roi_second . width + roi_expand * 2 , roi_second . height + roi_expand * 2 ) ;
float fiou = CheckUtil : : CalIoU ( roi_main , roi_second ) ;
m_pMergedetlog - > AddCheckstr ( PrintLevel_3 , 3 , " CalIoU " ,
" roi1 %s roi2 %s expand %d iou %f " ,
CheckUtil : : GetRectString ( roi_main ) . c_str ( ) ,
CheckUtil : : GetRectString ( roi_second ) . c_str ( ) ,
roi_expand , fiou ) ;
if ( fiou > pAd_checkParma - > analysis_iou . AD_IOU )
{
if ( std : : find ( second_channel_2s . begin ( ) , second_channel_2s . end ( ) , second_channel_name ) ! = second_channel_2s . end ( ) )
{
tmp_main_qxInfo . s_name_2 . push_back ( second_channel_name ) ;
}
if ( std : : find ( second_channel_3s . begin ( ) , second_channel_3s . end ( ) , second_channel_name ) ! = second_channel_3s . end ( ) )
{
tmp_main_qxInfo . s_name_3 . push_back ( second_channel_name ) ;
}
break ;
}
}
}
}
m_pMergedetlog - > AddCheckstr ( PrintLevel_3 , 3 , " Analysis_AD_Bind " , " main %s blob %d s_type %d s_name_2 %d s_name_3 %d roi %s " ,
main_channel_name . c_str ( ) , j_main , tmp_main_qxInfo . s_type ,
( int ) tmp_main_qxInfo . s_name_2 . size ( ) , ( int ) tmp_main_qxInfo . s_name_3 . size ( ) ,
CheckUtil : : GetRectString ( tmp_main_qxInfo . roi ) . c_str ( ) ) ;
tmp_main_qxInfo_all . push_back ( tmp_main_qxInfo ) ;
}
}
AD_list_bind [ main_channel_name ] = tmp_main_qxInfo_all ;
}
}
int A_2S_num = 0 ;
int A_3S_num = 0 ;
// 统计 2s 总数
if ( s_param_value > 0 )
{
int channels = 0 ;
int oneimgs = check_s_Num ;
for ( int ad_i = 0 ; ad_i < AD_list . size ( ) ; ad_i + + )
/* 数量距离统计 */
int num_1s = 0 ;
int num_2s = 0 ;
int num_3s = 0 ;
float min_dis = 9999999999 ;
for ( int i_main = 0 ; i_main < main_channel_s_qxList . size ( ) ; i_main + + )
{
string main_channel_name = main_channel_s_qxList [ i_main ] . channel_name ;
for ( int j = 0 ; j < AD_list_bind [ main_channel_name ] . size ( ) ; j + + )
{
{
if ( AD_list . at ( ad_i ) . num > 1 )
bool bproduct_AD_num = false ;
// 数量统计
if ( AD_list_bind [ main_channel_name ] [ j ] . s_type = = 1 )
{
{
AD_list . at ( ad_i ) . num_2s + + ;
bproduct_AD_num = true ;
for ( int i = 0 ; i < AD_list . at ( ad_i ) . numIdxList . size ( ) ; i + + )
num_1s + + ;
}
if ( AD_list_bind [ main_channel_name ] [ j ] . s_type = = 2 | | AD_list_bind [ main_channel_name ] [ j ] . s_name_2 . size ( ) > = 2 )
{
bproduct_AD_num = true ;
num_2s + + ;
}
if ( AD_list_bind [ main_channel_name ] [ j ] . s_type = = 3 | | AD_list_bind [ main_channel_name ] [ j ] . s_name_3 . size ( ) > = 3 )
{
bproduct_AD_num = true ;
num_3s + + ;
}
if ( bproduct_AD_num )
{
product_AD_num + + ;
}
// 距离计算
for ( int k = j + 1 ; k < AD_list_bind [ main_channel_name ] . size ( ) ; k + + )
{
float dis = CheckUtil : : calDis ( AD_list_bind [ main_channel_name ] [ j ] . location_product_mm , AD_list_bind [ main_channel_name ] [ k ] . location_product_mm ) ;
if ( dis < min_dis )
{
{
AD_list . at ( ad_i ) . num_2sIdxList . push_back ( AD_list . at ( ad_i ) . numIdxList . at ( i ) ) ;
min_dis = dis ;
}
}
}
}
A_2S_num + = AD_list . at ( ad_i ) . num_2s ;
A_3S_num + = AD_list . at ( ad_i ) . num_3s ;
if ( AD_list . at ( ad_i ) . num_1s > = 3 ) A_3S_num + + ;
m_pMergedetlog - > AddCheckstr ( PrintLevel_2 , 3 , " AD RGBL255 " , " AD_list %d %s " ,
ad_i , AD_list . at ( ad_i ) . GetInfo ( ) . c_str ( ) ) ;
}
}
m_pMergedetlog - > AddCheckstr ( PrintLevel_2 , 3 , " AD RGBL255 " , " product_AD_num %d 2S_num = %d 3S_num s = %d min_dis %0.2f " ,
product_AD_num , A_2S_num , A_3S_num , min_dis ) ;
}
}
m_pMergedetlog - > AddCheckstr ( PrintLevel_1 , 3 , " Analysis_AD_Bind " , " stat num_1s %d num_2s %d num_3s %d product_AD_num %d min_dis %0.2f " ,
num_1s , num_2s , num_3s , product_AD_num , min_dis ) ;
/* NG分析 */
for ( int i = 0 ; i < pALLTypeqxList - > channelqxList . size ( ) ; i + + )
for ( int i = 0 ; i < pALLTypeqxList - > channelqxList . size ( ) ; i + + )
{
{
QX_channel_List * pQXChannelList = & pALLTypeqxList - > channelqxList [ i ] ;
QX_channel_List * pQXChannelList = & pALLTypeqxList - > channelqxList [ i ] ;
if ( ! pAd_checkParma - > bOpen )
if ( ! pAd_checkParma - > bOpen )
{
{
continue ;
continue ;
}
}
bool bNG = false ;
bool bNG = false ;
@ -1432,19 +1417,17 @@ int QX_Merge_Analysis::Analysis_AD_Bind(ALL_Qx_DataList *pALLTypeqxList, int qx_
// 3S直接 NG
// 3S直接 NG
if ( pAd_checkParma - > analysis_s . NG_3s )
if ( pAd_checkParma - > analysis_s . NG_3s )
{
{
// 数量分析
if ( num_3s > = 1 )
if ( A_3S_num > = 1 )
{
{
m_pMergedetlog - > AddCheckstr ( PrintLevel_2 , 3 , " AD RGBL255 " , " 3S Analysis --> %s result NG 3S %d >= 1 " ,
m_pMergedetlog - > AddCheckstr ( PrintLevel_2 , 3 , " AD RGBL255 " , " 3S Analysis --> %s result NG 3S %d >= 1 " ,
pQXChannelList - > channel_name . c_str ( ) , A_3S_num ) ;
pQXChannelList - > channel_name . c_str ( ) , num_3s ) ;
bNG = true ;
bNG = true ;
NG_3S = true ;
NG_3S = true ;
}
}
else
else
{
{
m_pMergedetlog - > AddCheckstr ( PrintLevel_2 , 3 , " AD RGBL255 " , " 3S Analysis --> %s result OK 3S %d < 1 " ,
m_pMergedetlog - > AddCheckstr ( PrintLevel_2 , 3 , " AD RGBL255 " , " 3S Analysis --> %s result OK 3S %d < 1 " ,
pQXChannelList - > channel_name . c_str ( ) , A_3S_ num) ;
pQXChannelList - > channel_name . c_str ( ) , num_3s ) ;
}
}
}
}
}
}
@ -1454,14 +1437,12 @@ int QX_Merge_Analysis::Analysis_AD_Bind(ALL_Qx_DataList *pALLTypeqxList, int qx_
// 距离判断
// 距离判断
if ( pAd_checkParma - > analysis_dis . bOpen )
if ( pAd_checkParma - > analysis_dis . bOpen )
{
{
// 数量分析
if ( min_dis < = pAd_checkParma - > analysis_dis . disT )
if ( min_dis < = pAd_checkParma - > analysis_dis . disT )
{
{
m_pMergedetlog - > AddCheckstr ( PrintLevel_2 , 3 , " AD RGBL255 " , " Dis Analysis--> %s Dis result NG ,min dis %f <= parm dis %f " ,
m_pMergedetlog - > AddCheckstr ( PrintLevel_2 , 3 , " AD RGBL255 " , " Dis Analysis--> %s Dis result NG ,min dis %f <= parm dis %f " ,
pQXChannelList - > channel_name . c_str ( ) , min_dis , pAd_checkParma - > analysis_dis . disT ) ;
pQXChannelList - > channel_name . c_str ( ) , min_dis , pAd_checkParma - > analysis_dis . disT ) ;
bNG = true ;
bNG = true ;
NG_ 2S = true ;
NG_ dis = true ;
}
}
else
else
{
{
@ -1476,41 +1457,37 @@ int QX_Merge_Analysis::Analysis_AD_Bind(ALL_Qx_DataList *pALLTypeqxList, int qx_
// S标准判断
// S标准判断
if ( pAd_checkParma - > analysis_s . bOpen )
if ( pAd_checkParma - > analysis_s . bOpen )
{
{
// 数量分析
if ( num_2s > = pAd_checkParma - > analysis_s . Check_s_Num )
if ( A_2S_num > = pAd_checkParma - > analysis_s . Check_s_Num )
{
{
m_pMergedetlog - > AddCheckstr ( PrintLevel_2 , 3 , " AD RGBL255 " , " S Analysis--> %s result NG , Check %ds Num %d >= parm S Num %d " ,
m_pMergedetlog - > AddCheckstr ( PrintLevel_2 , 3 , " AD RGBL255 " , " S Analysis--> %s result NG , Check %ds Num %d >= parm S Num %d " ,
pQXChannelList - > channel_name . c_str ( ) , pAd_checkParma - > analysis_s . Check_s_Value , A_2S_num , pAd_checkParma - > analysis_s . Check_s_Num ) ;
pQXChannelList - > channel_name . c_str ( ) , pAd_checkParma - > analysis_s . Check_s_Value , num_2s , pAd_checkParma - > analysis_s . Check_s_Num ) ;
bNG = true ;
bNG = true ;
NG_2S = true ;
NG_2S = true ;
}
}
else
else
{
{
m_pMergedetlog - > AddCheckstr ( PrintLevel_2 , 3 , " AD RGBL255 " , " S Analysis--> %s result OK , Check %ds Num %d < parm S Num %d " ,
m_pMergedetlog - > AddCheckstr ( PrintLevel_2 , 3 , " AD RGBL255 " , " S Analysis--> %s result OK , Check %ds Num %d < parm S Num %d " ,
pQXChannelList - > channel_name . c_str ( ) , pAd_checkParma - > analysis_s . Check_s_Value , A_2S_ num, pAd_checkParma - > analysis_s . Check_s_Num ) ;
pQXChannelList - > channel_name . c_str ( ) , pAd_checkParma - > analysis_s . Check_s_Value , num_2s , pAd_checkParma - > analysis_s . Check_s_Num ) ;
}
}
}
}
}
}
// 已经NG
// 已经NG
if ( bNG )
if ( bNG )
{
{
QX_channel_List * pqxList = pQXChannelList ;
QX_channel_List * pqxList = pQXChannelList ;
for ( int i = 0 ; i < ( int ) pqxList - > qxList . size ( ) ; i + + )
for ( int i dx = 0 ; i dx < ( int ) pqxList - > qxList . size ( ) ; i dx + + )
{
{
if ( pqxList - > qxList . at ( idx ) . result = = 0 )
if ( pqxList - > qxList . at ( i ) . result = = 0 )
{
{
pqxList - > qxList . at ( i ) . result = 1 ;
pqxList - > qxList . at ( i dx ) . result = 1 ;
QX_RESULT tem ;
QX_RESULT tem ;
tem . blobIdx = pqxList - > qxList . at ( i ) . blobIdx ;
tem . blobIdx = pqxList - > qxList . at ( i dx ) . blobIdx ;
tem . mindis = pqxList - > qxList . at ( i ) . fmindis ;
tem . mindis = pqxList - > qxList . at ( i dx ) . fmindis ;
tem . flen = pqxList - > qxList . at ( i ) . length ;
tem . flen = pqxList - > qxList . at ( i dx ) . length ;
tem . error_Type = pqxList - > qxList . at ( i ) . nqx_type ;
tem . error_Type = pqxList - > qxList . at ( i dx ) . nqx_type ;
tem . camera_name = pqxList - > qxList . at ( i ) . camera_name ;
tem . camera_name = pqxList - > qxList . at ( i dx ) . camera_name ;
tem . channel_name = pqxList - > qxList . at ( i ) . channel_name ;
tem . channel_name = pqxList - > qxList . at ( i dx ) . channel_name ;
pqxList - > pChannelDetlog - > AddCheckstr ( PrintLevel_4 , 3 , " result = NG " , " Add New qx,Blob idx %d type %d num %d dis %f len %f " , tem . blobIdx , tem . error_Type , tem . qx_Num , tem . mindis , tem . flen ) ;
pqxList - > pChannelDetlog - > AddCheckstr ( PrintLevel_4 , 3 , " result = NG " , " Add New qx,Blob idx %d type %d num %d dis %f len %f " , tem . blobIdx , tem . error_Type , tem . qx_Num , tem . mindis , tem . flen ) ;
m_pMergedetlog - > AddCheckstr ( PrintLevel_4 , 3 , " result = NG " , " %s Add New qx,Blob idx %d type %d num %d dis %f len %f " ,
m_pMergedetlog - > AddCheckstr ( PrintLevel_4 , 3 , " result = NG " , " %s Add New qx,Blob idx %d type %d num %d dis %f len %f " ,
tem . channel_name . c_str ( ) , tem . blobIdx , tem . error_Type , tem . qx_Num , tem . mindis , tem . flen ) ;
tem . channel_name . c_str ( ) , tem . blobIdx , tem . error_Type , tem . qx_Num , tem . mindis , tem . flen ) ;