fix(pre_commit): 🎨 auto format pre-commit hooks

This commit is contained in:
pre-commit-ci[bot] 2024-05-20 19:41:32 +00:00
parent 7b42d8381b
commit ab55e81087
4 changed files with 118 additions and 118 deletions

View File

@ -99,4 +99,4 @@ status: new
<h2><a href="#supervision.detection.utils.mask_has_multiple_segments">mask_has_multiple_segments</a></h2>
</div>
:::supervision.detection.utils.mask_has_multiple_segments
:::supervision.detection.utils.mask_has_multiple_segments

View File

@ -50,6 +50,8 @@ from supervision.detection.utils import (
calculate_masks_centroids,
clip_boxes,
filter_polygons_by_area,
mask_has_holes,
mask_has_multiple_segments,
mask_iou_batch,
mask_non_max_suppression,
mask_to_polygons,
@ -60,8 +62,6 @@ from supervision.detection.utils import (
polygon_to_mask,
polygon_to_xyxy,
scale_boxes,
mask_has_holes,
mask_has_multiple_segments,
)
from supervision.draw.color import Color, ColorPalette
from supervision.draw.utils import (

View File

@ -857,7 +857,7 @@ def mask_has_holes(mask: npt.NDArray[np.bool_]) -> bool:
mask_uint8 = mask.astype(np.uint8)
_, hierarchy = cv2.findContours(mask_uint8, cv2.RETR_CCOMP, cv2.CHAIN_APPROX_SIMPLE)
if hierarchy: # at least one contour was found
if hierarchy: # at least one contour was found
parent_countour_index = 3
for h in hierarchy[0]:
if h[parent_countour_index] != -1:

View File

@ -12,13 +12,13 @@ from supervision.detection.utils import (
clip_boxes,
filter_polygons_by_area,
get_data_item,
mask_has_holes,
mask_has_multiple_segments,
mask_non_max_suppression,
merge_data,
move_boxes,
process_roboflow_result,
scale_boxes,
mask_has_holes,
mask_has_multiple_segments,
)
TEST_MASK = np.zeros((1, 1000, 1000), dtype=bool)
@ -1273,48 +1273,48 @@ def test_get_data_item(
@pytest.mark.parametrize(
"mask, expected_result, exception",
[
(np.array([[0, 0, 0, 0],
[0, 1, 1, 0],
[0, 1, 0, 0],
[0, 1, 1, 0]]).astype(bool),
False,
DoesNotRaise(),
), # foreground object in one continuous piece
(np.array([[1, 0, 0, 0],
[1, 0, 0, 0],
[0, 0, 0, 0],
[0, 1, 1, 0]]).astype(bool),
False,
DoesNotRaise(),
), # foreground object in 2 seperate elements
(np.array([[0, 0, 0, 0],
[0, 0, 0, 0],
[0, 0, 0, 0],
[0, 0, 0, 0]]).astype(bool),
False,
DoesNotRaise(),
), # no foreground pixels in mask
(np.array([[1, 1, 1, 1],
[1, 1, 1, 1],
[1, 1, 1, 1],
[1, 1, 1, 1]]).astype(bool),
False,
DoesNotRaise(),
), # only foreground pixels in mask
(np.array([[1, 1, 1, 0],
[1, 0, 1, 0],
[1, 1, 1, 0],
[0, 0, 0, 0]]).astype(bool),
True,
DoesNotRaise(),
), # foreground object has 1 hole
(np.array([[1, 1, 1, 0],
[1, 0, 1, 1],
[1, 1, 0, 1],
[0, 1, 1, 1]]).astype(bool),
True,
DoesNotRaise(),
), # foreground object has 2 holes
(
np.array([[0, 0, 0, 0], [0, 1, 1, 0], [0, 1, 0, 0], [0, 1, 1, 0]]).astype(
bool
),
False,
DoesNotRaise(),
), # foreground object in one continuous piece
(
np.array([[1, 0, 0, 0], [1, 0, 0, 0], [0, 0, 0, 0], [0, 1, 1, 0]]).astype(
bool
),
False,
DoesNotRaise(),
), # foreground object in 2 seperate elements
(
np.array([[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]).astype(
bool
),
False,
DoesNotRaise(),
), # no foreground pixels in mask
(
np.array([[1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1]]).astype(
bool
),
False,
DoesNotRaise(),
), # only foreground pixels in mask
(
np.array([[1, 1, 1, 0], [1, 0, 1, 0], [1, 1, 1, 0], [0, 0, 0, 0]]).astype(
bool
),
True,
DoesNotRaise(),
), # foreground object has 1 hole
(
np.array([[1, 1, 1, 0], [1, 0, 1, 1], [1, 1, 0, 1], [0, 1, 1, 1]]).astype(
bool
),
True,
DoesNotRaise(),
), # foreground object has 2 holes
],
)
def test_mask_has_holes(
@ -1322,84 +1322,84 @@ def test_mask_has_holes(
) -> None:
with exception:
result = mask_has_holes(mask)
assert result == expected_result
assert result == expected_result
@pytest.mark.parametrize(
"mask, connectivity, expected_result, exception",
[
(np.array([[0, 0, 0, 0],
[0, 1, 1, 0],
[0, 1, 0, 0],
[0, 1, 1, 0]]).astype(bool),
4,
False,
DoesNotRaise(),
), # foreground object in one continuous piece
(np.array([[1, 0, 0, 0],
[1, 0, 0, 0],
[0, 0, 0, 0],
[0, 1, 1, 0]]).astype(bool),
4,
True,
DoesNotRaise(),
), # foreground object in 2 seperate elements
(np.array([[0, 0, 0, 0],
[0, 0, 0, 0],
[0, 0, 0, 0],
[0, 0, 0, 0]]).astype(bool),
4,
False,
DoesNotRaise(),
), # no foreground pixels in mask
(np.array([[1, 1, 1, 1],
[1, 1, 1, 1],
[1, 1, 1, 1],
[1, 1, 1, 1]]).astype(bool),
4,
False,
DoesNotRaise(),
), # only foreground pixels in mask
(np.array([[1, 1, 1, 0],
[1, 0, 1, 1],
[1, 1, 0, 1],
[0, 1, 1, 1]]).astype(bool),
4,
False,
DoesNotRaise(),
), # foreground object has 2 holes, but is in single piece
(np.array([[1, 1, 0, 0],
[1, 1, 0, 1],
[1, 0, 1, 1],
[0, 0, 1, 1]]).astype(bool),
4,
True,
DoesNotRaise(),
), # foreground object in 2 elements with respect to 4-way connectivity
(np.array([[1, 1, 0, 0],
[1, 1, 0, 1],
[1, 0, 1, 1],
[0, 0, 1, 1]]).astype(bool),
8,
False,
DoesNotRaise(),
), # foreground object in single piece with respect to 8-way connectivity
(np.array([[1, 1, 0, 0],
[1, 1, 0, 1],
[1, 0, 1, 1],
[0, 0, 1, 1]]).astype(bool),
5,
None,
pytest.raises(ValueError),
), # Incorrect connectivity parameter value, raises ValueError
(
np.array([[0, 0, 0, 0], [0, 1, 1, 0], [0, 1, 0, 0], [0, 1, 1, 0]]).astype(
bool
),
4,
False,
DoesNotRaise(),
), # foreground object in one continuous piece
(
np.array([[1, 0, 0, 0], [1, 0, 0, 0], [0, 0, 0, 0], [0, 1, 1, 0]]).astype(
bool
),
4,
True,
DoesNotRaise(),
), # foreground object in 2 seperate elements
(
np.array([[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]).astype(
bool
),
4,
False,
DoesNotRaise(),
), # no foreground pixels in mask
(
np.array([[1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1]]).astype(
bool
),
4,
False,
DoesNotRaise(),
), # only foreground pixels in mask
(
np.array([[1, 1, 1, 0], [1, 0, 1, 1], [1, 1, 0, 1], [0, 1, 1, 1]]).astype(
bool
),
4,
False,
DoesNotRaise(),
), # foreground object has 2 holes, but is in single piece
(
np.array([[1, 1, 0, 0], [1, 1, 0, 1], [1, 0, 1, 1], [0, 0, 1, 1]]).astype(
bool
),
4,
True,
DoesNotRaise(),
), # foreground object in 2 elements with respect to 4-way connectivity
(
np.array([[1, 1, 0, 0], [1, 1, 0, 1], [1, 0, 1, 1], [0, 0, 1, 1]]).astype(
bool
),
8,
False,
DoesNotRaise(),
), # foreground object in single piece with respect to 8-way connectivity
(
np.array([[1, 1, 0, 0], [1, 1, 0, 1], [1, 0, 1, 1], [0, 0, 1, 1]]).astype(
bool
),
5,
None,
pytest.raises(ValueError),
), # Incorrect connectivity parameter value, raises ValueError
],
)
def test_mask_has_multiple_segments(
mask: npt.NDArray[np.bool_],
connectivity: int,
expected_result: bool,
exception: Exception
connectivity: int,
expected_result: bool,
exception: Exception,
) -> None:
with exception:
result = mask_has_multiple_segments(mask = mask, connectivity=connectivity)
assert result == expected_result
result = mask_has_multiple_segments(mask=mask, connectivity=connectivity)
assert result == expected_result