vertical: step - 3

This commit is contained in:
Havoc 2025-05-31 13:03:35 +08:00
parent 3f4e26af75
commit e1f32f2646
3 changed files with 47 additions and 17 deletions

View File

@ -569,3 +569,39 @@
2025-05-31 13:00:28 | INFO | utils.log_helper - 保存双轨迹线检测结果图像到: logs/image/dual_track_20250531_130028_867883.jpg
2025-05-31 13:00:28 | INFO | utils.log_helper - 保存原始图像到: logs/image/dual_track_orig_20250531_130028_867883.jpg
2025-05-31 13:00:28 | INFO | utils.log_helper - 双轨迹线检测结果: {'timestamp': '20250531_130028_867883', 'center_point': (945, 1080), 'deviation': 3.410605131648481e-13, 'left_track_mid_x': 608.5, 'right_track_mid_x': 1219.0, 'track_width': 610.5, 'center_slope': 0.02351973684210257}
2025-05-31 13:01:48 | DEBUG | utils.log_helper - 🐞 步骤1: 创建黄色掩码
2025-05-31 13:01:49 | DEBUG | utils.log_helper - 🐞 步骤1.5: 底部区域掩码
2025-05-31 13:01:50 | DEBUG | utils.log_helper - 🐞 步骤2: 边缘检测
2025-05-31 13:01:51 | DEBUG | utils.log_helper - 🐞 步骤3: 检测到 54 条直线
2025-05-31 13:01:52 | DEBUG | utils.log_helper - 🐞 步骤3.2: 筛选出 11 条垂直候选线 (合并前)
2025-05-31 13:01:53 | DEBUG | utils.log_helper - 🐞 步骤3.5: 合并筛选出 7 条垂直候选线 (合并后)
2025-05-31 13:01:54 | DEBUG | utils.log_helper - 🐞 步骤4: 找到 7 条垂直线
2025-05-31 13:01:55 | DEBUG | utils.log_helper - 🐞 左侧候选线数量: 4, 右侧候选线数量: 3
2025-05-31 13:01:56 | DEBUG | utils.log_helper - 🐞 选择最佳线对,评分: 0.95
2025-05-31 13:01:57 | INFO | utils.log_helper - 保存双轨迹线检测结果图像到: logs/image/dual_track_20250531_130157_840099.jpg
2025-05-31 13:01:57 | INFO | utils.log_helper - 保存原始图像到: logs/image/dual_track_orig_20250531_130157_840099.jpg
2025-05-31 13:01:57 | INFO | utils.log_helper - 双轨迹线检测结果: {'timestamp': '20250531_130157_840099', 'center_point': (945, 1080), 'deviation': 3.410605131648481e-13, 'left_track_mid_x': 608.5, 'right_track_mid_x': 1219.0, 'track_width': 610.5, 'center_slope': 0.02351973684210257}
2025-05-31 13:02:17 | DEBUG | utils.log_helper - 🐞 步骤1: 创建黄色掩码
2025-05-31 13:02:18 | DEBUG | utils.log_helper - 🐞 步骤1.5: 底部区域掩码
2025-05-31 13:02:19 | DEBUG | utils.log_helper - 🐞 步骤2: 边缘检测
2025-05-31 13:02:20 | DEBUG | utils.log_helper - 🐞 步骤3: 检测到 54 条直线
2025-05-31 13:02:21 | DEBUG | utils.log_helper - 🐞 步骤3.2: 筛选出 11 条垂直候选线 (合并前)
2025-05-31 13:02:22 | DEBUG | utils.log_helper - 🐞 步骤3.5: 合并筛选出 4 条垂直候选线 (合并后)
2025-05-31 13:02:23 | DEBUG | utils.log_helper - 🐞 步骤4: 找到 4 条垂直线
2025-05-31 13:02:24 | DEBUG | utils.log_helper - 🐞 左侧候选线数量: 2, 右侧候选线数量: 2
2025-05-31 13:02:25 | DEBUG | utils.log_helper - 🐞 选择最佳线对,评分: 0.95
2025-05-31 13:02:26 | INFO | utils.log_helper - 保存双轨迹线检测结果图像到: logs/image/dual_track_20250531_130226_932552.jpg
2025-05-31 13:02:26 | INFO | utils.log_helper - 保存原始图像到: logs/image/dual_track_orig_20250531_130226_932552.jpg
2025-05-31 13:02:26 | INFO | utils.log_helper - 双轨迹线检测结果: {'timestamp': '20250531_130226_932552', 'center_point': (945, 1080), 'deviation': 0.0, 'left_track_mid_x': 637.0, 'right_track_mid_x': 1219.0, 'track_width': 582.0, 'center_slope': 0.025372292418772317}
2025-05-31 13:03:10 | DEBUG | utils.log_helper - 🐞 步骤1: 创建黄色掩码
2025-05-31 13:03:11 | DEBUG | utils.log_helper - 🐞 步骤1.5: 底部区域掩码
2025-05-31 13:03:12 | DEBUG | utils.log_helper - 🐞 步骤2: 边缘检测
2025-05-31 13:03:13 | DEBUG | utils.log_helper - 🐞 步骤3: 检测到 54 条直线
2025-05-31 13:03:14 | DEBUG | utils.log_helper - 🐞 步骤3.2: 筛选出 11 条垂直候选线 (合并前)
2025-05-31 13:03:15 | DEBUG | utils.log_helper - 🐞 步骤3.5: 合并筛选出 4 条垂直候选线 (合并后)
2025-05-31 13:03:16 | DEBUG | utils.log_helper - 🐞 步骤4: 找到 4 条垂直线
2025-05-31 13:03:17 | DEBUG | utils.log_helper - 🐞 左侧候选线数量: 2, 右侧候选线数量: 2
2025-05-31 13:03:18 | DEBUG | utils.log_helper - 🐞 选择最佳线对,评分: 0.95
2025-05-31 13:03:19 | INFO | utils.log_helper - 保存双轨迹线检测结果图像到: logs/image/dual_track_20250531_130319_793352.jpg
2025-05-31 13:03:19 | INFO | utils.log_helper - 保存原始图像到: logs/image/dual_track_orig_20250531_130319_793352.jpg
2025-05-31 13:03:19 | INFO | utils.log_helper - 双轨迹线检测结果: {'timestamp': '20250531_130319_793352', 'center_point': (945, 1080), 'deviation': 0.0, 'left_track_mid_x': 637.0, 'right_track_mid_x': 1219.0, 'track_width': 582.0, 'center_slope': 0.025372292418772317}

View File

@ -129,7 +129,6 @@ def _merge_collinear_lines_iterative(lines,
# 过滤掉初始太短的线
current_lines = [line for line in lines if np.linalg.norm(np.array(line[:2]) - np.array(line[2:])) >= min_initial_len]
print(f"合并前: {len(lines)} 条线, 过滤后: {len(current_lines)} 条线")
if not current_lines or len(current_lines) < 2:
return np.array([[line] for line in current_lines]) if current_lines else np.array([])

View File

@ -145,23 +145,18 @@ def detect_dual_track_lines(image, observe=False, delay=1000, save_log=True,
cv2.imshow("合并前的垂直候选线", pre_merge_lines_img)
cv2.waitKey(delay)
# 合并共线线段,参数说明:
# min_initial_len: 最小初始线段长度
# max_angle_diff_deg: 最大允许角度差(度)
# max_ep_gap_abs: 端点间最大绝对距离
# max_ep_gap_factor: 端点间最大相对距离因子
# max_p_dist_abs: 点到线段最大绝对距离
# max_p_dist_factor: 点到线段最大相对距离因子
vertical_only_lines_tmp = vertical_only_lines.copy()
vertical_only_lines = _merge_collinear_lines_iterative(vertical_only_lines,
min_initial_len=5.0,
max_angle_diff_deg=10.0,
max_ep_gap_abs=max_line_gap / 2.0,
max_ep_gap_factor=0.25,
max_p_dist_abs=max_line_gap / 4.0,
max_p_dist_factor=1)
if observe:
print(f"合并前: {len(lines)} 条线, 合并后: {len(vertical_only_lines)} 条线")
vertical_only_lines_tmp = vertical_only_lines.copy()
vertical_only_lines = _merge_collinear_lines_iterative(vertical_only_lines,
min_initial_len=5.0, # 最小初始线段长度
max_angle_diff_deg=10.0, # 最大允许角度差(度)
max_ep_gap_abs=max_line_gap, # 端点间最大绝对距离
max_ep_gap_factor=1, # 端点间最大相对距离因子
max_p_dist_abs=max_line_gap, # 点到线段最大绝对距离
max_p_dist_factor=1) # 点到线段最大相对距离因子
if observe:
print(f"合并前: {len(vertical_only_lines_tmp)} 条线, 合并后: {len(vertical_only_lines)} 条线")
debug(f"步骤3.5: 合并筛选出 {len(vertical_only_lines)} 条垂直候选线 (合并后)", "可视化")
# 创建两个图像用于对比显示