diff --git a/AlgorithmModule/src/ImgCheckAnalysisy.cpp b/AlgorithmModule/src/ImgCheckAnalysisy.cpp index 08d82ab..54371e3 100644 --- a/AlgorithmModule/src/ImgCheckAnalysisy.cpp +++ b/AlgorithmModule/src/ImgCheckAnalysisy.cpp @@ -170,7 +170,7 @@ int ImgCheckAnalysisy::GetStatus() std::string ImgCheckAnalysisy::GetVersion() { - return std::string("BOE_1.2.5_" + std::string(__DATE__) + "_" + std::string(__TIME__)); + return std::string("BOE_1.2.6_" + std::string(__DATE__) + "_" + std::string(__TIME__)); } std::string ImgCheckAnalysisy::GetErrorInfo() diff --git a/AlgorithmModule/src/QX_Merge_Analysis.cpp b/AlgorithmModule/src/QX_Merge_Analysis.cpp index 1325992..1ac899b 100644 --- a/AlgorithmModule/src/QX_Merge_Analysis.cpp +++ b/AlgorithmModule/src/QX_Merge_Analysis.cpp @@ -847,11 +847,20 @@ int QX_Merge_Analysis::Analysis_AD(ALL_Qx_DataList *pALLTypeqxList, int qx_idx) int list_idx = -1; int channel_s = 0; + int roi_expand = (round)(pAd_checkParma->analysis_iou.AD_Expand); bool bnew_add = true; 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); - if (fiou > 0.15) + 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; } diff --git a/ConfigModule/include/CheckConfigDefine.h b/ConfigModule/include/CheckConfigDefine.h index 11497a5..c290680 100644 --- a/ConfigModule/include/CheckConfigDefine.h +++ b/ConfigModule/include/CheckConfigDefine.h @@ -1519,6 +1519,34 @@ struct AD_Analysisy_S return str123; } }; +// 暗点同位置判断(IOU) +struct AD_Analysisy_IOU +{ + float AD_IOU; // IOU 阈值 + float AD_Expand; // 扩张阈值 + AD_Analysisy_IOU() + { + Init(); + } + void Init() + { + AD_IOU = 0.15f; + AD_Expand = 0.0f; + } + void copy(AD_Analysisy_IOU tem) + { + this->AD_IOU = tem.AD_IOU; + this->AD_Expand = tem.AD_Expand; + } + std::string GetInfo(std::string str) + { + char buffer[256]; + sprintf(buffer, "%s:AD_IOU %f AD_Expand %f;", str.c_str(), + AD_IOU, AD_Expand); + std::string str123 = buffer; + return str123; + } +}; // 暗点检测功能 struct Function_AD_Check { @@ -1530,6 +1558,7 @@ struct Function_AD_Check AD_Analysisy_Num analysis_num; // 数量分析 AD_Analysisy_Dis analysis_dis; // 距离分析 AD_Analysisy_S analysis_s; // s 标准分析 + AD_Analysisy_IOU analysis_iou; // IOU 分析 Function_AD_Check() { @@ -1544,6 +1573,7 @@ struct Function_AD_Check analysis_num.Init(); analysis_dis.Init(); analysis_s.Init(); + analysis_iou.Init(); } void copy(Function_AD_Check tem) @@ -1555,16 +1585,18 @@ struct Function_AD_Check this->analysis_num.copy(tem.analysis_num); this->analysis_dis.copy(tem.analysis_dis); this->analysis_s.copy(tem.analysis_s); + this->analysis_iou.copy(tem.analysis_iou); } void print(std::string str) { - printf("%s>>bOpen %d %s %s %s %s %s %s\n", str.c_str(), + printf("%s>>bOpen %d %s %s %s %s %s %s %s\n", str.c_str(), bOpen, S_standard_3s.GetInfo("3S").c_str(), S_standard_2s.GetInfo("2S").c_str(), S_standard_1s.GetInfo("1S").c_str(), analysis_num.GetInfo("analysis_num").c_str(), analysis_dis.GetInfo("analysis_dis").c_str(), - analysis_s.GetInfo("analysis_s").c_str()); + analysis_s.GetInfo("analysis_s").c_str(), + analysis_iou.GetInfo("analysis_iou").c_str()); } std::string GetInfo(std::string str) { @@ -1577,6 +1609,7 @@ struct Function_AD_Check str123 += analysis_num.GetInfo("analysis_num"); str123 += analysis_dis.GetInfo("analysis_dis"); str123 += analysis_s.GetInfo("analysis_s"); + str123 += analysis_iou.GetInfo("analysis_iou"); return str123; } @@ -2155,6 +2188,7 @@ struct Base_Function_AD_Check AD_Analysisy_Num analysis_num; // 数量分析 AD_Analysisy_Dis analysis_dis; // 距离分析 AD_Analysisy_S analysis_s; // s 标准分析 + AD_Analysisy_IOU analysis_iou; // IOU 分析 Base_Function_AD_Check() { @@ -2169,6 +2203,7 @@ struct Base_Function_AD_Check analysis_num.Init(); analysis_dis.Init(); analysis_s.Init(); + analysis_iou.Init(); } void copy(Base_Function_AD_Check tem) @@ -2180,6 +2215,7 @@ struct Base_Function_AD_Check this->analysis_num.copy(tem.analysis_num); this->analysis_dis.copy(tem.analysis_dis); this->analysis_s.copy(tem.analysis_s); + this->analysis_iou.copy(tem.analysis_iou); } void print(std::string str) { @@ -2189,7 +2225,8 @@ struct Base_Function_AD_Check S_standard_1s.GetInfo("1S").c_str(), analysis_num.GetInfo("analysis_num").c_str(), analysis_dis.GetInfo("analysis_dis").c_str(), - analysis_s.GetInfo("analysis_s").c_str()); + analysis_s.GetInfo("analysis_s").c_str(), + analysis_iou.GetInfo("analysis_iou").c_str()); } std::string GetInfo(std::string str) { @@ -2202,6 +2239,7 @@ struct Base_Function_AD_Check str123 += analysis_num.GetInfo("analysis_num"); str123 += analysis_dis.GetInfo("analysis_dis"); str123 += analysis_s.GetInfo("analysis_s"); + str123 += analysis_iou.GetInfo("analysis_iou"); return str123; } diff --git a/ConfigModule/src/JsonConfig.cpp b/ConfigModule/src/JsonConfig.cpp index 6168c86..040e9c5 100644 --- a/ConfigModule/src/JsonConfig.cpp +++ b/ConfigModule/src/JsonConfig.cpp @@ -970,7 +970,6 @@ int ChannelFuntonConfigJson::GetFunction(Json::Value value, CheckFunction &funct { function.f_AD_Check.S_standard_3s.len = value_f["form"]["AD_S_Standard"]["AD_3S_Len"].asFloat(); } - if (value_f["form"]["AD_S_Standard"]["AD_2S_Area"]) { function.f_AD_Check.S_standard_2s.area = value_f["form"]["AD_S_Standard"]["AD_2S_Area"].asFloat(); @@ -979,7 +978,6 @@ int ChannelFuntonConfigJson::GetFunction(Json::Value value, CheckFunction &funct { function.f_AD_Check.S_standard_2s.len = value_f["form"]["AD_S_Standard"]["AD_2S_Len"].asFloat(); } - if (value_f["form"]["AD_S_Standard"]["AD_1S_Area"]) { function.f_AD_Check.S_standard_1s.area = value_f["form"]["AD_S_Standard"]["AD_1S_Area"].asFloat(); @@ -1011,7 +1009,6 @@ int ChannelFuntonConfigJson::GetFunction(Json::Value value, CheckFunction &funct { function.f_AD_Check.analysis_s.bOpen = value_f["form"]["AD_Check_S"]["Open"].asBool(); } - if (value_f["form"]["AD_Check_S"]["S_value"]) { function.f_AD_Check.analysis_s.Check_s_Value = value_f["form"]["AD_Check_S"]["S_value"].asInt(); @@ -1024,6 +1021,15 @@ int ChannelFuntonConfigJson::GetFunction(Json::Value value, CheckFunction &funct { function.f_AD_Check.analysis_s.Check_s_Num = value_f["form"]["AD_Check_S"]["Num"].asInt(); } + + if (value_f["form"]["AD_Check_IOU"]["AD_IOU"]) + { + function.f_AD_Check.analysis_iou.AD_IOU = value_f["form"]["AD_Check_IOU"]["AD_IOU"].asFloat(); + } + if (value_f["form"]["AD_Check_IOU"]["AD_Expand"]) + { + function.f_AD_Check.analysis_iou.AD_Expand = value_f["form"]["AD_Check_IOU"]["AD_Expand"].asFloat(); + } } else {