|
|
|
|
@ -934,9 +934,10 @@ struct Function_Support_Det
|
|
|
|
|
float r_offset; // 支架旋转偏移阈值(度):支架旋转矩形长轴(对应左/右边缘)与产品左/右边缘夹角超过该值判偏移;<=0 不判定
|
|
|
|
|
float support_min_area; // 支架缺失判定:支架面积阈值(单位 mm²)。支架由 Align_Inner 模型(smallmask)检出,支架面积 < 该值判缺失;<=0 不判定
|
|
|
|
|
// 支架边缘原图精细化(Support_Detect.form.support_param,均可选;仅对 edge_select 选中的边缘生效):
|
|
|
|
|
// 沿边缘按步长采样,从边缘向产品内侧逐像素找第一个 255 像素作为新边缘点,再重新拟合边缘线
|
|
|
|
|
// 沿边缘按步长采样,从边缘向产品内侧逐像素找第一个灰度 >= 阈值的像素作为新边缘点,再重新拟合边缘线
|
|
|
|
|
float edge_refine_search; // edge_refine_search:最多向内搜索的像素数;<=0=未配置(默认 80)
|
|
|
|
|
float edge_refine_step; // edge_refine_step:沿边采样步长(像素,不需要每个点都找);<=0=未配置(默认 40)
|
|
|
|
|
float edge_refine_gray; // edge_refine_gray:边缘点灰度阈值(0~255,灰度 >= 该值视为产品边缘);<=0=未配置(默认 240)
|
|
|
|
|
// 支架方向精细化(Support_Detect.form.support_param,均可选):模型 smallmask 精度低
|
|
|
|
|
// (1696×800 上采样回原图),minAreaRect 求支架方向角误差大;改为在原图(detImg)上拟合支架长边求方向角
|
|
|
|
|
float support_refine_search; // support_refine_search:取模型支架外接矩形最外侧多少列作为边缘搜索带;<=0=未配置(默认 30)
|
|
|
|
|
@ -982,6 +983,7 @@ struct Function_Support_Det
|
|
|
|
|
support_min_area = 0;
|
|
|
|
|
edge_refine_search = 0;
|
|
|
|
|
edge_refine_step = 0;
|
|
|
|
|
edge_refine_gray = 0;
|
|
|
|
|
support_refine_search = 0;
|
|
|
|
|
support_refine_step = 0;
|
|
|
|
|
support_refine_segments = 0;
|
|
|
|
|
@ -1016,6 +1018,7 @@ struct Function_Support_Det
|
|
|
|
|
this->support_min_area = tem.support_min_area;
|
|
|
|
|
this->edge_refine_search = tem.edge_refine_search;
|
|
|
|
|
this->edge_refine_step = tem.edge_refine_step;
|
|
|
|
|
this->edge_refine_gray = tem.edge_refine_gray;
|
|
|
|
|
this->support_refine_search = tem.support_refine_search;
|
|
|
|
|
this->support_refine_step = tem.support_refine_step;
|
|
|
|
|
this->support_refine_segments = tem.support_refine_segments;
|
|
|
|
|
@ -1037,16 +1040,16 @@ struct Function_Support_Det
|
|
|
|
|
}
|
|
|
|
|
void print(std::string str)
|
|
|
|
|
{
|
|
|
|
|
printf("%s>>bDetSupport %d bDrawSupport %d bUseTraditionEdge %d bDetHandle %d bDetTag %d x_standard %f y_standard %f x_offset %f y_offset %f r_offset %f support_min_area %f edgeRefine[search %.0f step %.0f] supportRefine[search %.0f step %.0f seg %.0f] edge num %ld handleRegion num %ld handle_diff %f handleRange[size %.2f~%.2f search %.1f depth %.1f area %.1f margin %.1f(0=自动,<0=默认)] BQ[area %f energy %f len %f hj %f]\n",
|
|
|
|
|
str.c_str(), bDetSupport, bDrawSupport, bUseTraditionEdge, bDetHandle, bDetTag, x_standard, y_standard, x_offset, y_offset, r_offset, support_min_area, edge_refine_search, edge_refine_step, support_refine_search, support_refine_step, support_refine_segments, edge_select.size(), handleRegions.size(), handle_diff,
|
|
|
|
|
printf("%s>>bDetSupport %d bDrawSupport %d bUseTraditionEdge %d bDetHandle %d bDetTag %d x_standard %f y_standard %f x_offset %f y_offset %f r_offset %f support_min_area %f edgeRefine[search %.0f step %.0f gray %.0f] supportRefine[search %.0f step %.0f seg %.0f] edge num %ld handleRegion num %ld handle_diff %f handleRange[size %.2f~%.2f search %.1f depth %.1f area %.1f margin %.1f(0=自动,<0=默认)] BQ[area %f energy %f len %f hj %f]\n",
|
|
|
|
|
str.c_str(), bDetSupport, bDrawSupport, bUseTraditionEdge, bDetHandle, bDetTag, x_standard, y_standard, x_offset, y_offset, r_offset, support_min_area, edge_refine_search, edge_refine_step, edge_refine_gray, support_refine_search, support_refine_step, support_refine_segments, edge_select.size(), handleRegions.size(), handle_diff,
|
|
|
|
|
handle_size_min_ratio, handle_size_max_ratio, handle_search_ratio, handle_min_depth_coef, handle_min_area_coef, handle_edge_margin_coef,
|
|
|
|
|
BQ_area, BQ_energy, BQ_len, BQ_hj);
|
|
|
|
|
}
|
|
|
|
|
std::string GetInfo(std::string str)
|
|
|
|
|
{
|
|
|
|
|
char buffer[1024];
|
|
|
|
|
sprintf(buffer, "%s>>bDetSupport %d bDrawSupport %d bUseTraditionEdge %d bDetHandle %d bDetTag %d x_standard %f y_standard %f x_offset %f y_offset %f r_offset %f support_min_area %f edgeRefine[search %.0f step %.0f] supportRefine[search %.0f step %.0f seg %.0f] edge num %ld handleRegion num %ld handle_diff %f handleRange[size %.2f~%.2f search %.1f depth %.1f area %.1f margin %.1f(0=自动,<0=默认)] BQ[area %f energy %f len %f hj %f]\n",
|
|
|
|
|
str.c_str(), bDetSupport, bDrawSupport, bUseTraditionEdge, bDetHandle, bDetTag, x_standard, y_standard, x_offset, y_offset, r_offset, support_min_area, edge_refine_search, edge_refine_step, support_refine_search, support_refine_step, support_refine_segments, edge_select.size(), handleRegions.size(), handle_diff,
|
|
|
|
|
sprintf(buffer, "%s>>bDetSupport %d bDrawSupport %d bUseTraditionEdge %d bDetHandle %d bDetTag %d x_standard %f y_standard %f x_offset %f y_offset %f r_offset %f support_min_area %f edgeRefine[search %.0f step %.0f gray %.0f] supportRefine[search %.0f step %.0f seg %.0f] edge num %ld handleRegion num %ld handle_diff %f handleRange[size %.2f~%.2f search %.1f depth %.1f area %.1f margin %.1f(0=自动,<0=默认)] BQ[area %f energy %f len %f hj %f]\n",
|
|
|
|
|
str.c_str(), bDetSupport, bDrawSupport, bUseTraditionEdge, bDetHandle, bDetTag, x_standard, y_standard, x_offset, y_offset, r_offset, support_min_area, edge_refine_search, edge_refine_step, edge_refine_gray, support_refine_search, support_refine_step, support_refine_segments, edge_select.size(), handleRegions.size(), handle_diff,
|
|
|
|
|
handle_size_min_ratio, handle_size_max_ratio, handle_search_ratio, handle_min_depth_coef, handle_min_area_coef, handle_edge_margin_coef,
|
|
|
|
|
BQ_area, BQ_energy, BQ_len, BQ_hj);
|
|
|
|
|
std::string str123 = buffer;
|
|
|
|
|
|