feat 开放暗点同位置判断IOU(v1.2.6)

dev_heyuan
liusiyang 1 month ago
parent 49390e31bb
commit 9996b5a228

@ -170,7 +170,7 @@ int ImgCheckAnalysisy::GetStatus()
std::string ImgCheckAnalysisy::GetVersion() 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() std::string ImgCheckAnalysisy::GetErrorInfo()

@ -847,11 +847,20 @@ int QX_Merge_Analysis::Analysis_AD(ALL_Qx_DataList *pALLTypeqxList, int qx_idx)
int list_idx = -1; int list_idx = -1;
int channel_s = 0; int channel_s = 0;
int roi_expand = (round)(pAd_checkParma->analysis_iou.AD_Expand);
bool bnew_add = true; bool bnew_add = true;
for (int idx = 0; idx < AD_list.size(); idx++) 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); 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; list_idx = idx;
} }

@ -1519,6 +1519,34 @@ struct AD_Analysisy_S
return str123; 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 struct Function_AD_Check
{ {
@ -1530,6 +1558,7 @@ struct Function_AD_Check
AD_Analysisy_Num analysis_num; // 数量分析 AD_Analysisy_Num analysis_num; // 数量分析
AD_Analysisy_Dis analysis_dis; // 距离分析 AD_Analysisy_Dis analysis_dis; // 距离分析
AD_Analysisy_S analysis_s; // s 标准分析 AD_Analysisy_S analysis_s; // s 标准分析
AD_Analysisy_IOU analysis_iou; // IOU 分析
Function_AD_Check() Function_AD_Check()
{ {
@ -1544,6 +1573,7 @@ struct Function_AD_Check
analysis_num.Init(); analysis_num.Init();
analysis_dis.Init(); analysis_dis.Init();
analysis_s.Init(); analysis_s.Init();
analysis_iou.Init();
} }
void copy(Function_AD_Check tem) void copy(Function_AD_Check tem)
@ -1555,16 +1585,18 @@ struct Function_AD_Check
this->analysis_num.copy(tem.analysis_num); this->analysis_num.copy(tem.analysis_num);
this->analysis_dis.copy(tem.analysis_dis); this->analysis_dis.copy(tem.analysis_dis);
this->analysis_s.copy(tem.analysis_s); this->analysis_s.copy(tem.analysis_s);
this->analysis_iou.copy(tem.analysis_iou);
} }
void print(std::string str) 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(), bOpen, S_standard_3s.GetInfo("3S").c_str(),
S_standard_2s.GetInfo("2S").c_str(), S_standard_2s.GetInfo("2S").c_str(),
S_standard_1s.GetInfo("1S").c_str(), S_standard_1s.GetInfo("1S").c_str(),
analysis_num.GetInfo("analysis_num").c_str(), analysis_num.GetInfo("analysis_num").c_str(),
analysis_dis.GetInfo("analysis_dis").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) std::string GetInfo(std::string str)
{ {
@ -1577,6 +1609,7 @@ struct Function_AD_Check
str123 += analysis_num.GetInfo("analysis_num"); str123 += analysis_num.GetInfo("analysis_num");
str123 += analysis_dis.GetInfo("analysis_dis"); str123 += analysis_dis.GetInfo("analysis_dis");
str123 += analysis_s.GetInfo("analysis_s"); str123 += analysis_s.GetInfo("analysis_s");
str123 += analysis_iou.GetInfo("analysis_iou");
return str123; return str123;
} }
@ -2155,6 +2188,7 @@ struct Base_Function_AD_Check
AD_Analysisy_Num analysis_num; // 数量分析 AD_Analysisy_Num analysis_num; // 数量分析
AD_Analysisy_Dis analysis_dis; // 距离分析 AD_Analysisy_Dis analysis_dis; // 距离分析
AD_Analysisy_S analysis_s; // s 标准分析 AD_Analysisy_S analysis_s; // s 标准分析
AD_Analysisy_IOU analysis_iou; // IOU 分析
Base_Function_AD_Check() Base_Function_AD_Check()
{ {
@ -2169,6 +2203,7 @@ struct Base_Function_AD_Check
analysis_num.Init(); analysis_num.Init();
analysis_dis.Init(); analysis_dis.Init();
analysis_s.Init(); analysis_s.Init();
analysis_iou.Init();
} }
void copy(Base_Function_AD_Check tem) 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_num.copy(tem.analysis_num);
this->analysis_dis.copy(tem.analysis_dis); this->analysis_dis.copy(tem.analysis_dis);
this->analysis_s.copy(tem.analysis_s); this->analysis_s.copy(tem.analysis_s);
this->analysis_iou.copy(tem.analysis_iou);
} }
void print(std::string str) void print(std::string str)
{ {
@ -2189,7 +2225,8 @@ struct Base_Function_AD_Check
S_standard_1s.GetInfo("1S").c_str(), S_standard_1s.GetInfo("1S").c_str(),
analysis_num.GetInfo("analysis_num").c_str(), analysis_num.GetInfo("analysis_num").c_str(),
analysis_dis.GetInfo("analysis_dis").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) std::string GetInfo(std::string str)
{ {
@ -2202,6 +2239,7 @@ struct Base_Function_AD_Check
str123 += analysis_num.GetInfo("analysis_num"); str123 += analysis_num.GetInfo("analysis_num");
str123 += analysis_dis.GetInfo("analysis_dis"); str123 += analysis_dis.GetInfo("analysis_dis");
str123 += analysis_s.GetInfo("analysis_s"); str123 += analysis_s.GetInfo("analysis_s");
str123 += analysis_iou.GetInfo("analysis_iou");
return str123; return str123;
} }

@ -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(); 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"]) 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(); 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(); 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"]) 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(); 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(); function.f_AD_Check.analysis_s.bOpen = value_f["form"]["AD_Check_S"]["Open"].asBool();
} }
if (value_f["form"]["AD_Check_S"]["S_value"]) 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(); 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(); 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 else
{ {

Loading…
Cancel
Save