소스 검색

Fix find_contours on the image border

Kentaro Wada 2 년 전
부모
커밋
abd4424d9e
1개의 변경된 파일2개의 추가작업 그리고 1개의 파일을 삭제
  1. 2 1
      labelme/ai/models/segment_anything.py

+ 2 - 1
labelme/ai/models/segment_anything.py

@@ -168,12 +168,13 @@ def _compute_polygon_from_points(
             "mask.jpg", imgviz.label2rgb(mask, imgviz.rgb2gray(image))
         )
 
-    contours = skimage.measure.find_contours(mask)
+    contours = skimage.measure.find_contours(np.pad(mask, pad_width=1))
     contour = max(contours, key=_get_contour_length)
     polygon = skimage.measure.approximate_polygon(
         coords=contour,
         tolerance=np.ptp(contour, axis=0).max() / 100,
     )
+    polygon = np.clip(polygon, (0, 0), (mask.shape[0] - 1, mask.shape[1] - 1))
     polygon = polygon[:-1]  # drop last point that is duplicate of first point
     if 0:
         image_pil = PIL.Image.fromarray(image)