Skip to content

Commit

Permalink
Make sure padding size is not negative (#1792)
Browse files Browse the repository at this point in the history
* Make sure padding size is not negative

If Resize maintains aspect ratio, could be the case that image shape is bigger than resize value.

* Test pad shape smaller than image shape

* Fix lint

* Remove whitespaces
  • Loading branch information
Charlyo authored Apr 15, 2022
1 parent 74031cc commit 7982dd1
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 2 deletions.
5 changes: 3 additions & 2 deletions mmcv/image/geometric.py
Original file line number Diff line number Diff line change
Expand Up @@ -460,7 +460,6 @@ def impad(img,
areas when padding_mode is 'constant'. Default: 0.
padding_mode (str): Type of padding. Should be: constant, edge,
reflect or symmetric. Default: constant.
- constant: pads with a constant value, this value is specified
with pad_val.
- edge: pads with the last value at the edge of the image.
Expand All @@ -479,7 +478,9 @@ def impad(img,

assert (shape is not None) ^ (padding is not None)
if shape is not None:
padding = (0, 0, shape[1] - img.shape[1], shape[0] - img.shape[0])
width = max(shape[1] - img.shape[1], 0)
height = max(shape[0] - img.shape[0], 0)
padding = (0, 0, width, height)

# check pad_val
if isinstance(pad_val, tuple):
Expand Down
4 changes: 4 additions & 0 deletions tests/test_image/test_geometric.py
Original file line number Diff line number Diff line change
Expand Up @@ -461,6 +461,10 @@ def test_impad(self):
with pytest.raises(AssertionError):
mmcv.impad(img, shape=(12, 15), padding=(0, 0, 5, 2))

# Pad shape smaller than image shape
padded_img = mmcv.impad(img, shape=(8, 8))
assert padded_img.shape == (10, 10, 3)

def test_impad_to_multiple(self):
img = np.random.rand(11, 14, 3).astype(np.float32)
padded_img = mmcv.impad_to_multiple(img, 4)
Expand Down

0 comments on commit 7982dd1

Please sign in to comment.