# 根据每个轮廓的类型, 找到对应的焊缝轨迹 paths = [] self.welding_pts_3d = [] for k, info in enumerate(contours_info): c_type = info["type"] shape, path, pts_3d, end_point_2d = self.FindTypePath(pm, info) if path is None: vision_log.error(f"no path in {k} contour") img_show = cv2.drawContours( img_show, [info["box"].astype(int)], 0, (0, 0, 0), 5) continue for end_2d in end_point_2d: cv2.circle(img_show, tuple(end_2d.astype( np.int32).tolist()), 5, (0, 0, 0), 5) img_show = cv2.drawContours( img_show, [info["box"].astype(int)], 0, (255, 0, 0), 2) path_info = {} path_info["type"] = info["type"].value path_info['shape'] = shape path_info["path"] = path path_info["pts_3d"] = pts_3d.tolist() paths.append(path_info)
时间: 2024-02-14 19:19:38 浏览: 76
这段代码的作用是根据每个类别的轮廓信息,找到对应的焊缝轨迹,并将其保存在paths数组中。
首先,创建一个空数组paths和一个空数组self.welding_pts_3d,用于存储焊缝轨迹信息。
然后,遍历contours_info数组中的每个轮廓信息,获取其类型c_type,并调用FindTypePath()函数,传入pm数组和该轮廓的信息info,返回该轮廓的形状shape、轨迹path、三维点集pts_3d和终点坐标end_point_2d。
接着,判断path是否为None,如果是则输出错误信息,将该轮廓的矩形框用黑色绘制在img_show数组中,继续下一个轮廓的处理;否则,遍历终点坐标end_point_2d,并将其用黑色圆圈绘制在img_show数组中,将该轮廓的矩形框用蓝色绘制在img_show数组中。
最后,将该轮廓的类型、形状、轨迹和三维点集等信息保存在path_info字典中,并将其添加到paths数组中。循环结束后,函数返回paths数组。
相关问题
# 根据每个轮廓的类型, 找到对应的焊缝轨迹 paths = [] self.welding_pts_3d = [] for k, info in enumerate(contours_info): c_type = info["type"] shape, path, pts_3d, end_point_2d = self.FindTypePath(pm, info) if path is None: vision_log.error(f"no path in {k} contour") img_show = cv2.drawContours( img_show, [info["box"].astype(int)], 0, (0, 0, 0), 5) continue
这段代码的功能是根据每个轮廓的类型,找到对应的焊缝轨迹,并将轨迹信息保存到 paths 和 self.welding_pts_3d 变量中。
具体来说,首先定义一个空列表 paths 和空列表 self.welding_pts_3d,用于保存轨迹信息。然后遍历 contours_info 中的每个轮廓,取出轮廓类型 c_type 和轮廓的其他信息 info。
接着调用 self.FindTypePath 函数,传入 pm 和 info 作为参数。FindTypePath 函数根据轮廓的类型 c_type,找到对应的焊缝轨迹,并返回轨迹的形状 shape、轨迹的像素坐标 path、轨迹的三维坐标 pts_3d 和轨迹的末尾点的像素坐标 end_point_2d。
如果轨迹不存在(即 path 为 None),则在控制台输出错误信息,并在可视化结果 img_show 上绘制出该轮廓的外接矩形框。如果轨迹存在,则将轨迹信息保存到 paths 和 self.welding_pts_3d 中。最终返回可视化结果 img_show。
阅读全文