如何分割轮廓线?

2024-09-27 07:21:21 发布

您现在位置:Python中文网/ 问答频道 /正文

这是生成遮罩的输入图像

Input Image

我从深度学习模型中得到一个图像掩模作为输出,我试图得到像这张图像中的轮廓。我所期望的轮廓应该具有相同的高度,最好是轮廓中最常见的高度,并且应该平行

Expected Mask Image

但是我得到的轮廓是重叠的,就像这张图片一样

Output Mask Image

有时轮廓的长度和高度不同。 如何获得预期图像中的轮廓?我尝试了不同的内核大小,但发现很难获得

下面是我用来转换从深度学习模型获得的输出的代码

se1 = cv2.getStructuringElement(cv2.MORPH_RECT, (8,8))
mask1 = cv2.morphologyEx(pred_col_mask.copy(), cv2.MORPH_OPEN, se1)

se2 = np.ones((8,8),np.uint8)
mask2  = cv2.dilate(mask1, se2)

se3 = cv2.getStructuringElement(cv2.MORPH_RECT, (8,8))
cleaned_out = cv2.morphologyEx(mask2, cv2.MORPH_OPEN, se3)

cnts = cv2.findContours(cleaned_out.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
cnts = imutils.grab_contours(cnts)

Tags: 模型rect图像高度opencv2轮廓copy

热门问题