From 4a2ab00f8dadca335a5b517b426b2e705f5f91be Mon Sep 17 00:00:00 2001 From: Havoc <2993167370@qq.com> Date: Tue, 20 May 2025 09:24:54 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=97=A5=E5=BF=97=E6=96=87?= =?UTF-8?q?=E4=BB=B6=EF=BC=8C=E5=A2=9E=E5=8A=A0=E4=BA=86=E8=BE=B9=E7=BC=98?= =?UTF-8?q?=E6=A3=80=E6=B5=8B=E8=BF=87=E7=A8=8B=E4=B8=AD=E7=9A=84=E8=B0=83?= =?UTF-8?q?=E8=AF=95=E4=BF=A1=E6=81=AF=E5=92=8C=E7=BB=93=E6=9E=9C=E8=AE=B0?= =?UTF-8?q?=E5=BD=95=EF=BC=9B=E4=BF=AE=E6=94=B9=E4=BA=86=E9=BB=84=E8=89=B2?= =?UTF-8?q?=E8=B5=9B=E9=81=93=E6=A3=80=E6=B5=8B=E6=BC=94=E7=A4=BA=E7=A8=8B?= =?UTF-8?q?=E5=BA=8F=E7=9A=84=E8=BE=93=E5=85=A5=E8=B7=AF=E5=BE=84=EF=BC=9B?= =?UTF-8?q?=E5=9C=A8=E8=BE=B9=E7=BC=98=E6=A3=80=E6=B5=8B=E7=AE=97=E6=B3=95?= =?UTF-8?q?=E4=B8=AD=E5=BC=95=E5=85=A5=E4=BA=86=E7=BA=BF=E6=AE=B5=E8=B4=A8?= =?UTF-8?q?=E9=87=8F=E8=AF=84=E5=88=86=E6=9C=BA=E5=88=B6=EF=BC=8C=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E4=BA=86=E7=BA=BF=E6=AE=B5=E9=80=89=E6=8B=A9=E9=80=BB?= =?UTF-8?q?=E8=BE=91=EF=BC=8C=E6=8F=90=E5=8D=87=E4=BA=86=E6=A3=80=E6=B5=8B?= =?UTF-8?q?=E7=9A=84=E5=87=86=E7=A1=AE=E6=80=A7=E5=92=8C=E7=A8=B3=E5=AE=9A?= =?UTF-8?q?=E6=80=A7=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .DS_Store | Bin 6148 -> 6148 bytes logs/robot_2025-05-19.log | 10 + logs/robot_2025-05-20.log | 10 + res/path/test-2.jpg | Bin 0 -> 120423 bytes test/task-path-track/yellow_track_demo.py | 2 +- utils/detect_track.py | 328 ++++++++++------------ 6 files changed, 170 insertions(+), 180 deletions(-) create mode 100644 logs/robot_2025-05-20.log create mode 100644 res/path/test-2.jpg diff --git a/.DS_Store b/.DS_Store index d4d83e687c90acba673022bf704a549dd369f6cb..aa1395735049acc0ff1c9f83469c9e2c89c064c7 100644 GIT binary patch delta 36 scmZoMXfc@J&&aniU^g=(-(((^-p#jJ_AzdL&ZfXPv0=hyc8Lv?Wyl diff --git a/logs/robot_2025-05-19.log b/logs/robot_2025-05-19.log index 41c9546..ca67f07 100644 --- a/logs/robot_2025-05-19.log +++ b/logs/robot_2025-05-19.log @@ -55,3 +55,13 @@ 2025-05-19 20:50:40 | DEBUG | utils.log_helper - 🐞 显示边缘斜率和中线交点 2025-05-19 20:50:41 | INFO | utils.log_helper - ℹ️ 保存横向边缘检测结果图像到: logs/image/horizontal_edge_20250519_205041_583040.jpg 2025-05-19 20:50:41 | INFO | utils.log_helper - ℹ️ 横向边缘检测结果: {'timestamp': '20250519_205041_583040', 'edge_point': (92, 1077), 'distance_to_center': -868, 'slope': -0.07008086253369272, 'distance_to_bottom': 63.83018867924534, 'intersection_point': (960, 1016), 'is_truncated': False} +2025-05-19 21:24:41 | DEBUG | utils.log_helper - 🐞 步骤1: 原始图像已加载 +2025-05-19 21:24:42 | DEBUG | utils.log_helper - 🐞 步骤2: 创建黄色掩码 +2025-05-19 21:24:43 | DEBUG | utils.log_helper - 🐞 步骤3: 提取黄色部分 +2025-05-19 21:24:44 | DEBUG | utils.log_helper - 🐞 检测底部和顶部边缘点 +2025-05-19 21:24:45 | DEBUG | utils.log_helper - 🐞 步骤4: 边缘检测 +2025-05-19 21:24:46 | DEBUG | utils.log_helper - 🐞 步骤5: 检测到 18 条直线 +2025-05-19 21:24:47 | DEBUG | utils.log_helper - 🐞 步骤6: 找到 3 条水平线 +2025-05-19 21:24:48 | DEBUG | utils.log_helper - 🐞 显示边缘斜率和中线交点 +2025-05-19 21:24:49 | INFO | utils.log_helper - ℹ️ 保存横向边缘检测结果图像到: logs/image/horizontal_edge_20250519_212449_369767.jpg +2025-05-19 21:24:49 | INFO | utils.log_helper - ℹ️ 横向边缘检测结果: {'timestamp': '20250519_212449_369767', 'edge_point': (540, 907), 'distance_to_center': -420, 'slope': -0.12202852614896989, 'distance_to_bottom': 224.25198098256737, 'intersection_point': (960, 855), 'score': 0.5611365011519962, 'valid': True, 'reason': ''} diff --git a/logs/robot_2025-05-20.log b/logs/robot_2025-05-20.log new file mode 100644 index 0000000..a5017c5 --- /dev/null +++ b/logs/robot_2025-05-20.log @@ -0,0 +1,10 @@ +2025-05-20 09:24:31 | DEBUG | utils.log_helper - 🐞 步骤1: 原始图像已加载 +2025-05-20 09:24:32 | DEBUG | utils.log_helper - 🐞 步骤2: 创建黄色掩码 +2025-05-20 09:24:33 | DEBUG | utils.log_helper - 🐞 步骤3: 提取黄色部分 +2025-05-20 09:24:34 | DEBUG | utils.log_helper - 🐞 检测底部和顶部边缘点 +2025-05-20 09:24:35 | DEBUG | utils.log_helper - 🐞 步骤4: 边缘检测 +2025-05-20 09:24:36 | DEBUG | utils.log_helper - 🐞 步骤5: 检测到 18 条直线 +2025-05-20 09:24:37 | DEBUG | utils.log_helper - 🐞 步骤6: 找到 3 条水平线 +2025-05-20 09:24:38 | DEBUG | utils.log_helper - 🐞 显示边缘斜率和中线交点 +2025-05-20 09:24:39 | INFO | utils.log_helper - ℹ️ 保存横向边缘检测结果图像到: logs/image/horizontal_edge_20250520_092439_823936.jpg +2025-05-20 09:24:39 | INFO | utils.log_helper - ℹ️ 横向边缘检测结果: {'timestamp': '20250520_092439_823936', 'edge_point': (540, 907), 'distance_to_center': -420, 'slope': -0.12202852614896989, 'distance_to_bottom': 224.25198098256737, 'intersection_point': (960, 855), 'score': 0.5611365011519962, 'valid': True, 'reason': ''} diff --git a/res/path/test-2.jpg b/res/path/test-2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3d676ec252c9e1a7db24a378a205bb305fac0a3b GIT binary patch literal 120423 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 UU_i~WGV{$ML*I~H#lMXF6DfSTDF6Tf literal 0 HcmV?d00001 diff --git a/test/task-path-track/yellow_track_demo.py b/test/task-path-track/yellow_track_demo.py index 278cfc0..dcc8b2e 100644 --- a/test/task-path-track/yellow_track_demo.py +++ b/test/task-path-track/yellow_track_demo.py @@ -44,7 +44,7 @@ def process_image(image_path, save_dir=None, show_steps=False): def main(): parser = argparse.ArgumentParser(description='黄色赛道检测演示程序') - parser.add_argument('--input', type=str, default='res/path/test-1.jpg', help='输入图像或视频的路径') + parser.add_argument('--input', type=str, default='res/path/test-2.jpg', help='输入图像或视频的路径') parser.add_argument('--output', type=str, default='res/path/test/result_image_20250514_024313.png', help='输出结果的保存路径') parser.add_argument('--type', type=str, choices=['image', 'video'], help='输入类型,不指定会自动检测') parser.add_argument('--show', default=True, action='store_true', help='显示处理步骤') diff --git a/utils/detect_track.py b/utils/detect_track.py index 2a0386d..8ad3bf3 100644 --- a/utils/detect_track.py +++ b/utils/detect_track.py @@ -42,6 +42,11 @@ def detect_horizontal_track_edge(image, observe=False, delay=1000, save_log=True bottom_bound = height top_bound = height - search_height + # 定义合理的值范围 + valid_y_range = (height * 0.5, height) # 有效的y坐标范围(下半部分图像) + max_slope = 0.15 # 最大允许斜率(接近水平) + min_line_length = width * 0.2 # 最小线长度 + if observe: debug("步骤1: 原始图像已加载", "加载") search_region_img = img.copy() @@ -118,8 +123,8 @@ def detect_horizontal_track_edge(image, observe=False, delay=1000, save_log=True cv2.imshow("边缘检测", edges) cv2.waitKey(delay) - # 使用霍夫变换检测直线 - lines = cv2.HoughLinesP(edges, 1, np.pi/180, threshold=30, + # 使用霍夫变换检测直线,降低阈值以检测更多线段 + lines = cv2.HoughLinesP(edges, 1, np.pi/180, threshold=25, minLineLength=width*0.1, maxLineGap=30) if lines is None or len(lines) == 0: @@ -148,181 +153,62 @@ def detect_horizontal_track_edge(image, observe=False, delay=1000, save_log=True slope = (y2 - y1) / (x2 - x1) # 筛选接近水平的线 (斜率接近0),但容许更大的倾斜度 - if abs(slope) < 0.3: + if abs(slope) < max_slope: # 确保线在搜索区域内 if ((left_bound <= x1 <= right_bound and top_bound <= y1 <= bottom_bound) or (left_bound <= x2 <= right_bound and top_bound <= y2 <= bottom_bound)): # 计算线的中点y坐标 mid_y = (y1 + y2) / 2 line_length = np.sqrt((x2-x1)**2 + (y2-y1)**2) - # 保存线段、其y坐标和长度 - horizontal_lines.append((line[0], mid_y, slope, line_length)) + + # 过滤掉短线段和太靠近图像上部的线 + if line_length >= min_line_length and mid_y >= valid_y_range[0]: + # 计算线段在图像中的位置得分(越靠近底部得分越高) + position_score = min(1.0, (mid_y - valid_y_range[0]) / (valid_y_range[1] - valid_y_range[0])) + + # 计算长度得分(越长越好) + length_score = min(1.0, line_length / (width * 0.5)) + + # 计算斜率得分(越水平越好) + slope_score = max(0.0, 1.0 - abs(slope) / max_slope) + + # 计算线段位于图像中央的程度 + mid_x = (x1 + x2) / 2 + center_score = max(0.0, 1.0 - abs(mid_x - center_x) / (width * 0.3)) + + # 计算综合得分 + quality_score = position_score * 0.4 + length_score * 0.3 + slope_score * 0.2 + center_score * 0.1 + + # 保存线段、其y坐标、斜率、长度和质量得分 + horizontal_lines.append((line[0], mid_y, slope, line_length, quality_score)) if not horizontal_lines: if observe: - error("未检测到水平线", "失败") + error("未检测到合格的水平线", "失败") return None, None if observe: debug(f"步骤6: 找到 {len(horizontal_lines)} 条水平线", "处理") h_lines_img = img.copy() for line_info in horizontal_lines: - line, _, slope, _ = line_info + line, _, slope, _, score = line_info x1, y1, x2, y2 = line - cv2.line(h_lines_img, (x1, y1), (x2, y2), (0, 255, 255), 2) - # 显示斜率 - cv2.putText(h_lines_img, f"{slope:.2f}", ((x1+x2)//2, (y1+y2)//2), - cv2.FONT_HERSHEY_SIMPLEX, 0.5, (255, 0, 0), 1) + # 根据得分调整线的颜色,得分越高越绿 + color = (int(255 * (1-score)), int(255 * score), 0) + cv2.line(h_lines_img, (x1, y1), (x2, y2), color, 2) + # 显示斜率和得分 + cv2.putText(h_lines_img, f"{slope:.2f}|{score:.2f}", ((x1+x2)//2, (y1+y2)//2), + cv2.FONT_HERSHEY_SIMPLEX, 0.5, color, 1) cv2.imshow("水平线", h_lines_img) cv2.waitKey(delay) - # 将水平线分为上边缘线和下边缘线(按y坐标排序) - bottom_line = None - top_line = None - is_truncated = False # 标记下方线是否被截断 + # 根据质量得分排序水平线 + horizontal_lines.sort(key=lambda x: x[4], reverse=True) - if len(horizontal_lines) > 1: - # 按y坐标排序 (从大到小,底部的线排在前面) - horizontal_lines.sort(key=lambda x: x[1], reverse=True) - - # 提取最底部和次底部的线段 - bottom_line = horizontal_lines[0] - - # 检查是否有明显的上下边缘 - y_coords = [line[1] for line in horizontal_lines] - y_diffs = [y_coords[i] - y_coords[i+1] for i in range(len(y_coords)-1)] - - if len(y_diffs) > 0 and max(y_diffs) > height * 0.05: # 如果有明显的高度差 - # 找到高度差最大的位置 - split_idx = y_diffs.index(max(y_diffs)) - - # 分别获取下边缘线和上边缘线 - bottom_line = horizontal_lines[0] # 最底部的线 - top_line = horizontal_lines[split_idx+1] # 上边缘线 - - # 检查上下两条线是否平行 - 计算斜率差异 - bottom_slope = bottom_line[2] - top_slope = top_line[2] - slope_diff = abs(bottom_slope - top_slope) - - # 计算两线的交点(如果存在) - bottom_x1, bottom_y1, bottom_x2, bottom_y2 = bottom_line[0] - top_x1, top_y1, top_x2, top_y2 = top_line[0] - - # 根据斜率差异判断是否平行 - # 如果斜率差异很小,认为基本平行 - if slope_diff > 0.05: # 斜率差异超过阈值 - # 计算两条线延长后的交点 - # 线段方程: y = mx + b - # 计算两条线的截距b - bottom_b = bottom_y1 - bottom_slope * bottom_x1 - top_b = top_y1 - top_slope * top_x1 - - # 检查交点是否在图像范围内或者附近 - # 求解 y = m1*x + b1 = m2*x + b2 - if abs(bottom_slope - top_slope) > 1e-6: # 避免除以接近0的值 - intersection_x = (top_b - bottom_b) / (bottom_slope - top_slope) - intersection_y = bottom_slope * intersection_x + bottom_b - - # 判断交点是否在图像宽度的2倍范围内 - if -width <= intersection_x <= width * 2: - is_truncated = True - if observe: - debug(f"检测到上下边缘线不平行,交点: ({intersection_x:.1f}, {intersection_y:.1f})", "分析") - debug("判断下方线被截断", "分析") - - # 显示上下边缘线及其延长线和交点 - intersect_img = img.copy() - # 画原始线段 - cv2.line(intersect_img, (bottom_x1, bottom_y1), (bottom_x2, bottom_y2), (0, 255, 0), 2) - cv2.line(intersect_img, (top_x1, top_y1), (top_x2, top_y2), (255, 0, 255), 2) - - # 延长线段以显示交点 - ext_left_x = max(0, int(intersection_x - width/2)) - ext_right_x = min(width-1, int(intersection_x + width/2)) - - # 计算延长线上的点 - bottom_ext_left_y = int(bottom_slope * ext_left_x + bottom_b) - bottom_ext_right_y = int(bottom_slope * ext_right_x + bottom_b) - top_ext_left_y = int(top_slope * ext_left_x + top_b) - top_ext_right_y = int(top_slope * ext_right_x + top_b) - - # 绘制延长线 - cv2.line(intersect_img, (ext_left_x, bottom_ext_left_y), - (ext_right_x, bottom_ext_right_y), (0, 255, 0), 1, cv2.LINE_DASHED) - cv2.line(intersect_img, (ext_left_x, top_ext_left_y), - (ext_right_x, top_ext_right_y), (255, 0, 255), 1, cv2.LINE_DASHED) - - # 标记交点 - if 0 <= intersection_x < width and 0 <= intersection_y < height: - cv2.circle(intersect_img, (int(intersection_x), int(intersection_y)), - 10, (0, 0, 255), -1) - - cv2.imshow("上下边缘线交点分析", intersect_img) - cv2.waitKey(delay) - - # 如果检测到下方线被截断,使用上边缘线来估计实际的下边缘线 - if is_truncated and top_line is not None: - if observe: - debug("使用上边缘估计真实的下边缘", "处理") - - # 获取赛道平均宽度(可以是预先测量的固定值,或根据未截断部分测量) - # 这里假设赛道宽度是固定的,可以根据实际情况调整 - track_width_pixels = height * 0.15 # 假设赛道宽度是图像高度的15% - - # 计算一个修正后的底部线段,方向与上边缘线平行,但位置下移 - corrected_bottom_slope = top_slope # 使用上边缘的斜率 - - # 计算上边缘线的方程: y = mx + b - top_b = top_y1 - top_slope * top_x1 - - # 计算修正后的下边缘线的截距,使其下移track_width_pixels距离 - # 由于是在图像坐标系,y轴向下,所以是加法 - corrected_bottom_b = top_b + track_width_pixels - - # 计算修正后的下边缘线的两个端点 - corrected_bottom_x1 = left_bound - corrected_bottom_y1 = int(corrected_bottom_slope * corrected_bottom_x1 + corrected_bottom_b) - corrected_bottom_x2 = right_bound - corrected_bottom_y2 = int(corrected_bottom_slope * corrected_bottom_x2 + corrected_bottom_b) - - # 创建修正后的底部线段 - corrected_bottom_line = ( - [corrected_bottom_x1, corrected_bottom_y1, corrected_bottom_x2, corrected_bottom_y2], - (corrected_bottom_y1 + corrected_bottom_y2) / 2, # mid_y - corrected_bottom_slope, - np.sqrt((corrected_bottom_x2-corrected_bottom_x1)**2 + (corrected_bottom_y2-corrected_bottom_y1)**2) # length - ) - - if observe: - # 显示修正后的线段 - corrected_img = img.copy() - # 原始线段 - cv2.line(corrected_img, (bottom_x1, bottom_y1), (bottom_x2, bottom_y2), (0, 255, 0), 2) - cv2.line(corrected_img, (top_x1, top_y1), (top_x2, top_y2), (255, 0, 255), 2) - # 修正后的线段 - cv2.line(corrected_img, (corrected_bottom_x1, corrected_bottom_y1), - (corrected_bottom_x2, corrected_bottom_y2), (0, 0, 255), 2) - - cv2.putText(corrected_img, "截断的底边", (bottom_x1, bottom_y1 - 10), - cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 2) - cv2.putText(corrected_img, "上边缘", (top_x1, top_y1 - 10), - cv2.FONT_HERSHEY_SIMPLEX, 0.5, (255, 0, 255), 2) - cv2.putText(corrected_img, "修正后的底边", (corrected_bottom_x1, corrected_bottom_y1 - 10), - cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 0, 255), 2) - - cv2.imshow("修正后的边缘线", corrected_img) - cv2.waitKey(delay) - - # 使用修正后的底部线作为选定的线 - bottom_line = corrected_bottom_line - else: - # 只有一条水平线 - bottom_line = horizontal_lines[0] - - # 使用底部线段作为最终选择 - selected_line = bottom_line[0] - selected_slope = bottom_line[2] + # 取质量最高的线段作为最终选择 + selected_line = horizontal_lines[0][0] + selected_slope = horizontal_lines[0][2] + selected_score = horizontal_lines[0][4] # 提取线段端点 x1, y1, x2, y2 = selected_line @@ -338,6 +224,59 @@ def detect_horizontal_track_edge(image, observe=False, delay=1000, save_log=True else: bottom_edge_point = (x2, y2) + # 如果得分过低,可能是错误识别,尝试使用边缘点拟合 + if selected_score < 0.4 and len(bottom_points) >= 5: + if observe: + debug(f"线段质量得分过低: {selected_score:.2f},尝试使用边缘点拟合", "处理") + + # 筛选下半部分的点 + valid_bottom_points = [p for p in bottom_points if p[1] >= valid_y_range[0]] + + if len(valid_bottom_points) >= 5: + # 使用RANSAC拟合直线以去除异常值 + x_points = np.array([p[0] for p in valid_bottom_points]).reshape(-1, 1) + y_points = np.array([p[1] for p in valid_bottom_points]) + + ransac = linear_model.RANSACRegressor(residual_threshold=5.0) + ransac.fit(x_points, y_points) + + # 获取拟合参数 + fitted_slope = ransac.estimator_.coef_[0] + intercept = ransac.estimator_.intercept_ + + # 检查斜率是否在合理范围内 + if abs(fitted_slope) < max_slope: + # 计算拟合线的inliers比例 + inlier_mask = ransac.inlier_mask_ + inlier_ratio = sum(inlier_mask) / len(inlier_mask) + + # 如果有足够的内点,使用拟合的直线 + if inlier_ratio > 0.5: + # 使用拟合的直线参数计算线段端点 + x1 = left_bound + y1 = int(fitted_slope * x1 + intercept) + x2 = right_bound + y2 = int(fitted_slope * x2 + intercept) + + selected_slope = fitted_slope + selected_line = [x1, y1, x2, y2] + + # 重新计算边缘点 + if y1 > y2: + bottom_edge_point = (x1, y1) + else: + bottom_edge_point = (x2, y2) + + if observe: + debug(f"使用拟合直线,斜率: {fitted_slope:.4f}, 内点比例: {inlier_ratio:.2f}", "处理") + fitted_line_img = img.copy() + cv2.line(fitted_line_img, (x1, y1), (x2, y2), (0, 255, 255), 2) + for i, point in enumerate(valid_bottom_points): + color = (0, 255, 0) if inlier_mask[i] else (0, 0, 255) + cv2.circle(fitted_line_img, point, 3, color, -1) + cv2.imshow("拟合线和内点", fitted_line_img) + cv2.waitKey(delay) + # 获取线上的更多点 selected_points = [] step = 5 # 每5个像素取一个点 @@ -346,22 +285,34 @@ def detect_horizontal_track_edge(image, observe=False, delay=1000, save_log=True if top_bound <= y <= bottom_bound: selected_points.append((x, y)) - if observe: - debug(f"步骤7: 找到边缘点 {bottom_edge_point}", "检测") - edge_img = img.copy() - # 画线 - cv2.line(edge_img, (x1, y1), (x2, y2), (0, 255, 0), 2) - # 绘制所有点 - for point in selected_points: - cv2.circle(edge_img, point, 3, (255, 0, 0), -1) - # 标记边缘点 - cv2.circle(edge_img, bottom_edge_point, 10, (0, 0, 255), -1) - cv2.imshow("选定的横向线和边缘点", edge_img) - cv2.waitKey(delay) + # 对结果进行合理性检查 + valid_result = True + reason = "" + + # 检查边缘点是否在有效范围内 + if not (valid_y_range[0] <= bottom_edge_point[1] <= valid_y_range[1]): + valid_result = False + reason += "边缘点y坐标超出有效范围; " + + # 检查线段长度 + line_length = np.sqrt((x2-x1)**2 + (y2-y1)**2) + if line_length < min_line_length: + valid_result = False + reason += "线段长度不足; " + + # 检查是否有足够的点 + if len(selected_points) < 5: + valid_result = False + reason += "选定点数量不足; " # 计算这个点到中线的距离 distance_to_center = bottom_edge_point[0] - center_x + # 检查到中心的距离是否合理 + if abs(distance_to_center) > width * 0.8: + valid_result = False + reason += "到中心距离过大; " + # 计算中线与检测到的横向线的交点 # 横向线方程: y = slope * (x - x1) + y1 # 中线方程: x = center_x @@ -370,14 +321,24 @@ def detect_horizontal_track_edge(image, observe=False, delay=1000, save_log=True intersection_y = selected_slope * (center_x - x1) + y1 intersection_point = (int(intersection_x), int(intersection_y)) + # 检查交点的y坐标是否在有效范围内 + if not (valid_y_range[0] <= intersection_y <= valid_y_range[1]): + valid_result = False + reason += "交点y坐标超出有效范围; " + # 计算交点到图像底部的距离(以像素为单位) distance_to_bottom = height - intersection_y + # 如果结果无效,可能需要返回失败 + if not valid_result and observe: + warning(f"检测结果不合理: {reason}", "警告") + result_img = None if observe or save_log: slope_img = img.copy() # 画出检测到的线 - cv2.line(slope_img, (x1, y1), (x2, y2), (0, 255, 0), 2) + line_color = (0, 255, 0) if valid_result else (0, 0, 255) + cv2.line(slope_img, (x1, y1), (x2, y2), line_color, 2) # 标记边缘点 cv2.circle(slope_img, bottom_edge_point, 10, (0, 0, 255), -1) # 画出中线 @@ -389,16 +350,19 @@ def detect_horizontal_track_edge(image, observe=False, delay=1000, save_log=True cv2.line(slope_img, intersection_point, (intersection_x, height), (255, 255, 0), 2) cv2.putText(slope_img, f"Slope: {selected_slope:.4f}", (10, 30), - cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0), 2) + cv2.FONT_HERSHEY_SIMPLEX, 1, line_color, 2) cv2.putText(slope_img, f"Distance to center: {distance_to_center}px", (10, 70), - cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0), 2) + cv2.FONT_HERSHEY_SIMPLEX, 1, line_color, 2) cv2.putText(slope_img, f"Distance to bottom: {distance_to_bottom:.1f}px", (10, 110), - cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0), 2) + cv2.FONT_HERSHEY_SIMPLEX, 1, line_color, 2) cv2.putText(slope_img, f"中线交点: ({intersection_point[0]}, {intersection_point[1]})", (10, 150), - cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0), 2) - if is_truncated: - cv2.putText(slope_img, "下方线被截断(已修正)", (10, 190), - cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 0, 255), 2) + cv2.FONT_HERSHEY_SIMPLEX, 1, line_color, 2) + cv2.putText(slope_img, f"质量得分: {selected_score:.2f}", (10, 190), + cv2.FONT_HERSHEY_SIMPLEX, 1, line_color, 2) + + if not valid_result: + cv2.putText(slope_img, f"警告: {reason}", (10, 230), + cv2.FONT_HERSHEY_SIMPLEX, 0.8, (0, 0, 255), 2) if observe: debug("显示边缘斜率和中线交点", "显示") @@ -424,10 +388,16 @@ def detect_horizontal_track_edge(image, observe=False, delay=1000, save_log=True "slope": selected_slope, "distance_to_bottom": distance_to_bottom, "intersection_point": intersection_point, - "is_truncated": is_truncated + "score": selected_score, + "valid": valid_result, + "reason": reason if not valid_result else "" } info(f"横向边缘检测结果: {log_info}", "日志") + # 如果结果无效,可能需要返回失败 + if not valid_result: + return None, None + # 创建边缘信息字典 edge_info = { "x": bottom_edge_point[0], @@ -438,7 +408,7 @@ def detect_horizontal_track_edge(image, observe=False, delay=1000, save_log=True "points_count": len(selected_points), # 该组中点的数量 "intersection_point": intersection_point, # 中线与横向线的交点 "distance_to_bottom": distance_to_bottom, # 交点到图像底部的距离 - "is_truncated": is_truncated, # 下方线是否被截断并修正 + "score": selected_score, # 线段质量得分 # "points": selected_points # 添加选定的点组 }