# find contours of each welding line # 根据mask的每个类别, 用opencv找轮廓方法进行分类 n_class = self.config["n_class"] img_show, contours_info = FindContour(img, imgROI, n_class)
时间: 2024-03-29 20:41:45 浏览: 21
这段代码的作用是利用OpenCV库中的函数对mask数组中的每个类别进行轮廓查找,最终得到每个类别的轮廓信息。
首先,从配置文件中获取类别数目n_class。
然后,调用FindContour()函数,传入img、imgROI和n_class三个参数,返回值为轮廓查找后的结果img_show和contours_info。其中,img是原始图像,imgROI是mask中提取出来的区域,n_class是类别数目。
在FindContour()函数中,首先创建一个和imgROI数组相同大小的全零数组mask2,用于存储每个类别的轮廓信息。然后,利用cv2.findContours()函数对imgROI数组中的像素进行轮廓查找,查找结果存储在变量contours中。
接着,遍历contours中的每个轮廓,对每个轮廓进行面积和周长的计算,并根据计算结果的大小进行分类,将每个类别的轮廓信息保存到mask2数组中。
最后,将img和mask2数组进行可视化,得到img_show数组,并将img_show和contours_info数组作为函数返回值返回。
相关问题
for k_class in range(1, n_class): # 遍历每个类找到对应的轮廓, 相当于分类 mask_k = np.zeros((h_mask, m_mask)).astype(np.uint8) mask_k[np.where(mask == k_class)] = 255 FindContourSinge(k_class, mask_k, contours_info, img_show) return img_show, contours_info
这段代码的作用是在二值掩模图像中找到每个类别对应的轮廓,并将轮廓信息保存在一个列表中,最后将轮廓绘制在原始图像上并返回。
具体来说,代码使用`range(1, n_class)`来遍历每个类别,然后通过`np.where(mask == k_class)`找到当前类别在掩模图像中的像素点位置。
接着,将这些像素点位置设置为255,其余位置为0,生成一个新的掩模图像`mask_k`,用于寻找当前类别对应的轮廓。
然后,调用`FindContourSinge`函数,该函数会在`mask_k`中找到当前类别的轮廓,并将轮廓的信息保存在`contours_info`列表中。
最后,将找到的轮廓绘制在原始图像`img_show`上,返回绘制好轮廓的图像和轮廓信息列表`contours_info`。
# 根据每个轮廓的类型, 找到对应的焊缝轨迹 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。