Loading imgutils/preprocess/pillow.py +20 −22 Original line number Diff line number Diff line import copy import io from textwrap import indent from typing import Union, Sequence, Optional, Tuple from typing import Union, Optional, Tuple, List import numpy as np from PIL import Image Loading Loading @@ -60,16 +60,21 @@ class PillowResize: # noinspection PyUnresolvedReferences def __init__( self, size: Union[int, Sequence[int]], size: Union[int, List[int], Tuple[int, ...]], interpolation: int = Image.BILINEAR, max_size: Optional[int] = None, antialias: bool = True ): if not isinstance(size, (int, Sequence)): if not isinstance(size, (int, list, tuple)): raise TypeError(f"Size should be int or sequence. Got {type(size)}") if isinstance(size, Sequence) and len(size) not in (1, 2): if isinstance(size, (list, tuple)) and len(size) not in (1, 2): raise ValueError("If size is a sequence, it should have 1 or 2 values") if max_size is not None and isinstance(size, (list, tuple)) and len(size) != 1: raise ValueError( "max_size is only supported for single int size or sequence of length 1" ) # noinspection PyTypeChecker self.size = size self.interpolation = interpolation self.max_size = max_size Loading @@ -77,12 +82,8 @@ class PillowResize: def _get_resize_size(self, img: Image.Image) -> Tuple[int, int]: w, h = img.size if isinstance(self.size, int) or (isinstance(self.size, Sequence) and len(self.size) == 1): if isinstance(self.size, int) or (isinstance(self.size, (list, tuple)) and len(self.size) == 1): size = self.size if isinstance(self.size, int) else self.size[0] if (w <= h and w == size) or (h <= w and h == size): return w, h if w < h: ow = size oh = int(size * h / w) Loading @@ -91,7 +92,6 @@ class PillowResize: ow = int(size * w / h) if self.max_size is not None: if isinstance(self.size, int) or len(self.size) == 1: max_size = self.max_size if max(oh, ow) > max_size: if oh > ow: Loading @@ -100,10 +100,6 @@ class PillowResize: else: oh = int(max_size * oh / ow) ow = max_size else: raise ValueError( "max_size is only supported for single int size or sequence of length 1" ) return ow, oh else: Loading @@ -122,6 +118,8 @@ class PillowResize: return img.resize(size, self.interpolation, reducing_gap=None if self.antialias else 1.0) else: return img.resize(size, self.interpolation) else: return img def __repr__(self) -> str: interpolate_str = _PILLOW_TO_STR[self.interpolation] Loading test/preprocess/test_pillow.py +243 −4 Original line number Diff line number Diff line from unittest import skipUnless import numpy as np import pytest from PIL import Image from hbutils.testing import tmatrix Loading @@ -18,15 +19,59 @@ else: @pytest.mark.unittest class TestPreprocessPillow: def test_get_pillow_resample_int(self): assert _get_pillow_resample(0) == Image.NEAREST assert _get_pillow_resample(1) == Image.LANCZOS assert _get_pillow_resample(2) == Image.BILINEAR assert _get_pillow_resample(3) == Image.BICUBIC assert _get_pillow_resample(4) == Image.BOX assert _get_pillow_resample(5) == Image.HAMMING def test_get_pillow_resample_str(self): assert _get_pillow_resample('nearest') == Image.NEAREST assert _get_pillow_resample('NEAREST') == Image.NEAREST assert _get_pillow_resample('bilinear') == Image.BILINEAR assert _get_pillow_resample('bicubic') == Image.BICUBIC assert _get_pillow_resample('box') == Image.BOX assert _get_pillow_resample('hamming') == Image.HAMMING assert _get_pillow_resample('lanczos') == Image.LANCZOS def test_invalid_int(self): with pytest.raises(ValueError, match='Invalid interpolation value - 6.'): _get_pillow_resample(6) def test_invalid_str(self): with pytest.raises(ValueError, match='Invalid interpolation value - \'invalid\'.'): _get_pillow_resample('invalid') def test_invalid_type(self): with pytest.raises(TypeError, match='Input type must be int or str, got <class \'float\'>'): _get_pillow_resample(1.0) def test_resize_invalid(self): with pytest.raises(TypeError): _ = PillowResize(size='888') with pytest.raises(ValueError): _ = PillowResize(size=()) with pytest.raises(ValueError): _ = PillowResize(size=(1, 1, 4, 5, 1, 4)) def test_resize_invalid_input(self): resize = PillowResize(size=640) with pytest.raises(TypeError): _ = resize(np.random.randn(3, 284, 284)) @skipUnless(_TORCHVISION_AVAILABLE, 'Torchvision unavailable.') @pytest.mark.parametrize(*tmatrix({ 'src_image': [ 'png_full.png', 'png_full_m90.png', 'png_640.png', 'png_640_m90.png', ], 'size': [ 224, 384, 640, 888, ], 'resample': [ 'bilinear', Loading @@ -53,13 +98,14 @@ class TestPreprocessPillow: @skipUnless(_TORCHVISION_AVAILABLE, 'Torchvision unavailable.') @pytest.mark.parametrize(*tmatrix({ 'src_image': [ 'png_full.png', 'png_full_m90.png', 'png_640.png', 'png_640_m90.png', ], 'size': [ (224, 384), (384, 224), (256,), (999, 888), ], 'resample': [ 'bilinear', Loading @@ -82,3 +128,196 @@ class TestPreprocessPillow: interpolation=_get_interpolation_mode(resample), ) assert image_diff(presize(image), tresize(image), throw_exception=False) < 1e-3 @skipUnless(_TORCHVISION_AVAILABLE, 'Torchvision unavailable.') @pytest.mark.parametrize(*tmatrix({ 'src_image': [ 'png_640.png', 'png_640_m90.png', ], ('size', 'max_size'): [ (224, 384), (224, 256), (224, 225), (256, 384), (256, 257), ], 'resample': [ 'bilinear', 'bicubic', 'lanczos', 'box', 'hamming', 'nearest', ] })) def test_resize_pair_max_sizes(self, src_image, size, max_size, resample, image_diff): from torchvision.transforms import Resize image = Image.open(get_testfile(src_image)) presize = PillowResize( size=size, interpolation=_get_pillow_resample(resample), max_size=max_size, ) tresize = Resize( size=size, interpolation=_get_interpolation_mode(resample), max_size=max_size, ) assert image_diff(presize(image), tresize(image), throw_exception=False) < 1e-3 @pytest.mark.parametrize(['size', 'interpolation', 'max_size', 'antialias', 'repr_text'], [ (224, 0, None, True, 'PillowResize(size=224, interpolation=nearest, max_size=None, antialias=True)'), (224, 0, None, False, 'PillowResize(size=224, interpolation=nearest, max_size=None, antialias=False)'), (224, 2, None, True, 'PillowResize(size=224, interpolation=bilinear, max_size=None, antialias=True)'), (224, 2, None, False, 'PillowResize(size=224, interpolation=bilinear, max_size=None, antialias=False)'), (224, 3, None, True, 'PillowResize(size=224, interpolation=bicubic, max_size=None, antialias=True)'), (224, 3, None, False, 'PillowResize(size=224, interpolation=bicubic, max_size=None, antialias=False)'), (224, 4, None, True, 'PillowResize(size=224, interpolation=box, max_size=None, antialias=True)'), (224, 4, None, False, 'PillowResize(size=224, interpolation=box, max_size=None, antialias=False)'), (224, 5, None, True, 'PillowResize(size=224, interpolation=hamming, max_size=None, antialias=True)'), (224, 5, None, False, 'PillowResize(size=224, interpolation=hamming, max_size=None, antialias=False)'), (224, 1, None, True, 'PillowResize(size=224, interpolation=lanczos, max_size=None, antialias=True)'), (224, 1, None, False, 'PillowResize(size=224, interpolation=lanczos, max_size=None, antialias=False)'), (224, 0, 384, True, 'PillowResize(size=224, interpolation=nearest, max_size=384, antialias=True)'), (224, 0, 384, False, 'PillowResize(size=224, interpolation=nearest, max_size=384, antialias=False)'), (224, 2, 384, True, 'PillowResize(size=224, interpolation=bilinear, max_size=384, antialias=True)'), (224, 2, 384, False, 'PillowResize(size=224, interpolation=bilinear, max_size=384, antialias=False)'), (224, 3, 384, True, 'PillowResize(size=224, interpolation=bicubic, max_size=384, antialias=True)'), (224, 3, 384, False, 'PillowResize(size=224, interpolation=bicubic, max_size=384, antialias=False)'), (224, 4, 384, True, 'PillowResize(size=224, interpolation=box, max_size=384, antialias=True)'), (224, 4, 384, False, 'PillowResize(size=224, interpolation=box, max_size=384, antialias=False)'), (224, 5, 384, True, 'PillowResize(size=224, interpolation=hamming, max_size=384, antialias=True)'), (224, 5, 384, False, 'PillowResize(size=224, interpolation=hamming, max_size=384, antialias=False)'), (224, 1, 384, True, 'PillowResize(size=224, interpolation=lanczos, max_size=384, antialias=True)'), (224, 1, 384, False, 'PillowResize(size=224, interpolation=lanczos, max_size=384, antialias=False)'), (224, 0, 640, True, 'PillowResize(size=224, interpolation=nearest, max_size=640, antialias=True)'), (224, 0, 640, False, 'PillowResize(size=224, interpolation=nearest, max_size=640, antialias=False)'), (224, 2, 640, True, 'PillowResize(size=224, interpolation=bilinear, max_size=640, antialias=True)'), (224, 2, 640, False, 'PillowResize(size=224, interpolation=bilinear, max_size=640, antialias=False)'), (224, 3, 640, True, 'PillowResize(size=224, interpolation=bicubic, max_size=640, antialias=True)'), (224, 3, 640, False, 'PillowResize(size=224, interpolation=bicubic, max_size=640, antialias=False)'), (224, 4, 640, True, 'PillowResize(size=224, interpolation=box, max_size=640, antialias=True)'), (224, 4, 640, False, 'PillowResize(size=224, interpolation=box, max_size=640, antialias=False)'), (224, 5, 640, True, 'PillowResize(size=224, interpolation=hamming, max_size=640, antialias=True)'), (224, 5, 640, False, 'PillowResize(size=224, interpolation=hamming, max_size=640, antialias=False)'), (224, 1, 640, True, 'PillowResize(size=224, interpolation=lanczos, max_size=640, antialias=True)'), (224, 1, 640, False, 'PillowResize(size=224, interpolation=lanczos, max_size=640, antialias=False)'), (224, 0, 888, True, 'PillowResize(size=224, interpolation=nearest, max_size=888, antialias=True)'), (224, 0, 888, False, 'PillowResize(size=224, interpolation=nearest, max_size=888, antialias=False)'), (224, 2, 888, True, 'PillowResize(size=224, interpolation=bilinear, max_size=888, antialias=True)'), (224, 2, 888, False, 'PillowResize(size=224, interpolation=bilinear, max_size=888, antialias=False)'), (224, 3, 888, True, 'PillowResize(size=224, interpolation=bicubic, max_size=888, antialias=True)'), (224, 3, 888, False, 'PillowResize(size=224, interpolation=bicubic, max_size=888, antialias=False)'), (224, 4, 888, True, 'PillowResize(size=224, interpolation=box, max_size=888, antialias=True)'), (224, 4, 888, False, 'PillowResize(size=224, interpolation=box, max_size=888, antialias=False)'), (224, 5, 888, True, 'PillowResize(size=224, interpolation=hamming, max_size=888, antialias=True)'), (224, 5, 888, False, 'PillowResize(size=224, interpolation=hamming, max_size=888, antialias=False)'), (224, 1, 888, True, 'PillowResize(size=224, interpolation=lanczos, max_size=888, antialias=True)'), (224, 1, 888, False, 'PillowResize(size=224, interpolation=lanczos, max_size=888, antialias=False)'), (384, 0, None, True, 'PillowResize(size=384, interpolation=nearest, max_size=None, antialias=True)'), (384, 0, None, False, 'PillowResize(size=384, interpolation=nearest, max_size=None, antialias=False)'), (384, 2, None, True, 'PillowResize(size=384, interpolation=bilinear, max_size=None, antialias=True)'), (384, 2, None, False, 'PillowResize(size=384, interpolation=bilinear, max_size=None, antialias=False)'), (384, 3, None, True, 'PillowResize(size=384, interpolation=bicubic, max_size=None, antialias=True)'), (384, 3, None, False, 'PillowResize(size=384, interpolation=bicubic, max_size=None, antialias=False)'), (384, 4, None, True, 'PillowResize(size=384, interpolation=box, max_size=None, antialias=True)'), (384, 4, None, False, 'PillowResize(size=384, interpolation=box, max_size=None, antialias=False)'), (384, 5, None, True, 'PillowResize(size=384, interpolation=hamming, max_size=None, antialias=True)'), (384, 5, None, False, 'PillowResize(size=384, interpolation=hamming, max_size=None, antialias=False)'), (384, 1, None, True, 'PillowResize(size=384, interpolation=lanczos, max_size=None, antialias=True)'), (384, 1, None, False, 'PillowResize(size=384, interpolation=lanczos, max_size=None, antialias=False)'), (384, 0, 384, True, 'PillowResize(size=384, interpolation=nearest, max_size=384, antialias=True)'), (384, 0, 384, False, 'PillowResize(size=384, interpolation=nearest, max_size=384, antialias=False)'), (384, 2, 384, True, 'PillowResize(size=384, interpolation=bilinear, max_size=384, antialias=True)'), (384, 2, 384, False, 'PillowResize(size=384, interpolation=bilinear, max_size=384, antialias=False)'), (384, 3, 384, True, 'PillowResize(size=384, interpolation=bicubic, max_size=384, antialias=True)'), (384, 3, 384, False, 'PillowResize(size=384, interpolation=bicubic, max_size=384, antialias=False)'), (384, 4, 384, True, 'PillowResize(size=384, interpolation=box, max_size=384, antialias=True)'), (384, 4, 384, False, 'PillowResize(size=384, interpolation=box, max_size=384, antialias=False)'), (384, 5, 384, True, 'PillowResize(size=384, interpolation=hamming, max_size=384, antialias=True)'), (384, 5, 384, False, 'PillowResize(size=384, interpolation=hamming, max_size=384, antialias=False)'), (384, 1, 384, True, 'PillowResize(size=384, interpolation=lanczos, max_size=384, antialias=True)'), (384, 1, 384, False, 'PillowResize(size=384, interpolation=lanczos, max_size=384, antialias=False)'), (384, 0, 640, True, 'PillowResize(size=384, interpolation=nearest, max_size=640, antialias=True)'), (384, 0, 640, False, 'PillowResize(size=384, interpolation=nearest, max_size=640, antialias=False)'), (384, 2, 640, True, 'PillowResize(size=384, interpolation=bilinear, max_size=640, antialias=True)'), (384, 2, 640, False, 'PillowResize(size=384, interpolation=bilinear, max_size=640, antialias=False)'), (384, 3, 640, True, 'PillowResize(size=384, interpolation=bicubic, max_size=640, antialias=True)'), (384, 3, 640, False, 'PillowResize(size=384, interpolation=bicubic, max_size=640, antialias=False)'), (384, 4, 640, True, 'PillowResize(size=384, interpolation=box, max_size=640, antialias=True)'), (384, 4, 640, False, 'PillowResize(size=384, interpolation=box, max_size=640, antialias=False)'), (384, 5, 640, True, 'PillowResize(size=384, interpolation=hamming, max_size=640, antialias=True)'), (384, 5, 640, False, 'PillowResize(size=384, interpolation=hamming, max_size=640, antialias=False)'), (384, 1, 640, True, 'PillowResize(size=384, interpolation=lanczos, max_size=640, antialias=True)'), (384, 1, 640, False, 'PillowResize(size=384, interpolation=lanczos, max_size=640, antialias=False)'), (384, 0, 888, True, 'PillowResize(size=384, interpolation=nearest, max_size=888, antialias=True)'), (384, 0, 888, False, 'PillowResize(size=384, interpolation=nearest, max_size=888, antialias=False)'), (384, 2, 888, True, 'PillowResize(size=384, interpolation=bilinear, max_size=888, antialias=True)'), (384, 2, 888, False, 'PillowResize(size=384, interpolation=bilinear, max_size=888, antialias=False)'), (384, 3, 888, True, 'PillowResize(size=384, interpolation=bicubic, max_size=888, antialias=True)'), (384, 3, 888, False, 'PillowResize(size=384, interpolation=bicubic, max_size=888, antialias=False)'), (384, 4, 888, True, 'PillowResize(size=384, interpolation=box, max_size=888, antialias=True)'), (384, 4, 888, False, 'PillowResize(size=384, interpolation=box, max_size=888, antialias=False)'), (384, 5, 888, True, 'PillowResize(size=384, interpolation=hamming, max_size=888, antialias=True)'), (384, 5, 888, False, 'PillowResize(size=384, interpolation=hamming, max_size=888, antialias=False)'), (384, 1, 888, True, 'PillowResize(size=384, interpolation=lanczos, max_size=888, antialias=True)'), (384, 1, 888, False, 'PillowResize(size=384, interpolation=lanczos, max_size=888, antialias=False)'), ((224, 384), 0, None, True, 'PillowResize(size=(224, 384), interpolation=nearest, max_size=None, antialias=True)'), ((224, 384), 0, None, False, 'PillowResize(size=(224, 384), interpolation=nearest, max_size=None, antialias=False)'), ((224, 384), 2, None, True, 'PillowResize(size=(224, 384), interpolation=bilinear, max_size=None, antialias=True)'), ((224, 384), 2, None, False, 'PillowResize(size=(224, 384), interpolation=bilinear, max_size=None, antialias=False)'), ((224, 384), 3, None, True, 'PillowResize(size=(224, 384), interpolation=bicubic, max_size=None, antialias=True)'), ((224, 384), 3, None, False, 'PillowResize(size=(224, 384), interpolation=bicubic, max_size=None, antialias=False)'), ((224, 384), 4, None, True, 'PillowResize(size=(224, 384), interpolation=box, max_size=None, antialias=True)'), ( (224, 384), 4, None, False, 'PillowResize(size=(224, 384), interpolation=box, max_size=None, antialias=False)'), ((224, 384), 5, None, True, 'PillowResize(size=(224, 384), interpolation=hamming, max_size=None, antialias=True)'), ((224, 384), 5, None, False, 'PillowResize(size=(224, 384), interpolation=hamming, max_size=None, antialias=False)'), ((224, 384), 1, None, True, 'PillowResize(size=(224, 384), interpolation=lanczos, max_size=None, antialias=True)'), ((224, 384), 1, None, False, 'PillowResize(size=(224, 384), interpolation=lanczos, max_size=None, antialias=False)'), ([224, 284], 0, None, True, 'PillowResize(size=[224, 284], interpolation=nearest, max_size=None, antialias=True)'), ([224, 284], 0, None, False, 'PillowResize(size=[224, 284], interpolation=nearest, max_size=None, antialias=False)'), ([224, 284], 2, None, True, 'PillowResize(size=[224, 284], interpolation=bilinear, max_size=None, antialias=True)'), ([224, 284], 2, None, False, 'PillowResize(size=[224, 284], interpolation=bilinear, max_size=None, antialias=False)'), ([224, 284], 3, None, True, 'PillowResize(size=[224, 284], interpolation=bicubic, max_size=None, antialias=True)'), ([224, 284], 3, None, False, 'PillowResize(size=[224, 284], interpolation=bicubic, max_size=None, antialias=False)'), ([224, 284], 4, None, True, 'PillowResize(size=[224, 284], interpolation=box, max_size=None, antialias=True)'), ( [224, 284], 4, None, False, 'PillowResize(size=[224, 284], interpolation=box, max_size=None, antialias=False)'), ([224, 284], 5, None, True, 'PillowResize(size=[224, 284], interpolation=hamming, max_size=None, antialias=True)'), ([224, 284], 5, None, False, 'PillowResize(size=[224, 284], interpolation=hamming, max_size=None, antialias=False)'), ([224, 284], 1, None, True, 'PillowResize(size=[224, 284], interpolation=lanczos, max_size=None, antialias=True)'), ([224, 284], 1, None, False, 'PillowResize(size=[224, 284], interpolation=lanczos, max_size=None, antialias=False)'), ]) def test_resize_repr(self, size, interpolation, max_size, antialias, repr_text): size = PillowResize( size=size, interpolation=interpolation, max_size=max_size, antialias=antialias, ) assert repr(size) == repr_text test/testfile/png_640.png 0 → 100644 +820 KiB Loading image diff... test/testfile/png_640_m90.png 0 → 100644 +821 KiB Loading image diff... Loading
imgutils/preprocess/pillow.py +20 −22 Original line number Diff line number Diff line import copy import io from textwrap import indent from typing import Union, Sequence, Optional, Tuple from typing import Union, Optional, Tuple, List import numpy as np from PIL import Image Loading Loading @@ -60,16 +60,21 @@ class PillowResize: # noinspection PyUnresolvedReferences def __init__( self, size: Union[int, Sequence[int]], size: Union[int, List[int], Tuple[int, ...]], interpolation: int = Image.BILINEAR, max_size: Optional[int] = None, antialias: bool = True ): if not isinstance(size, (int, Sequence)): if not isinstance(size, (int, list, tuple)): raise TypeError(f"Size should be int or sequence. Got {type(size)}") if isinstance(size, Sequence) and len(size) not in (1, 2): if isinstance(size, (list, tuple)) and len(size) not in (1, 2): raise ValueError("If size is a sequence, it should have 1 or 2 values") if max_size is not None and isinstance(size, (list, tuple)) and len(size) != 1: raise ValueError( "max_size is only supported for single int size or sequence of length 1" ) # noinspection PyTypeChecker self.size = size self.interpolation = interpolation self.max_size = max_size Loading @@ -77,12 +82,8 @@ class PillowResize: def _get_resize_size(self, img: Image.Image) -> Tuple[int, int]: w, h = img.size if isinstance(self.size, int) or (isinstance(self.size, Sequence) and len(self.size) == 1): if isinstance(self.size, int) or (isinstance(self.size, (list, tuple)) and len(self.size) == 1): size = self.size if isinstance(self.size, int) else self.size[0] if (w <= h and w == size) or (h <= w and h == size): return w, h if w < h: ow = size oh = int(size * h / w) Loading @@ -91,7 +92,6 @@ class PillowResize: ow = int(size * w / h) if self.max_size is not None: if isinstance(self.size, int) or len(self.size) == 1: max_size = self.max_size if max(oh, ow) > max_size: if oh > ow: Loading @@ -100,10 +100,6 @@ class PillowResize: else: oh = int(max_size * oh / ow) ow = max_size else: raise ValueError( "max_size is only supported for single int size or sequence of length 1" ) return ow, oh else: Loading @@ -122,6 +118,8 @@ class PillowResize: return img.resize(size, self.interpolation, reducing_gap=None if self.antialias else 1.0) else: return img.resize(size, self.interpolation) else: return img def __repr__(self) -> str: interpolate_str = _PILLOW_TO_STR[self.interpolation] Loading
test/preprocess/test_pillow.py +243 −4 Original line number Diff line number Diff line from unittest import skipUnless import numpy as np import pytest from PIL import Image from hbutils.testing import tmatrix Loading @@ -18,15 +19,59 @@ else: @pytest.mark.unittest class TestPreprocessPillow: def test_get_pillow_resample_int(self): assert _get_pillow_resample(0) == Image.NEAREST assert _get_pillow_resample(1) == Image.LANCZOS assert _get_pillow_resample(2) == Image.BILINEAR assert _get_pillow_resample(3) == Image.BICUBIC assert _get_pillow_resample(4) == Image.BOX assert _get_pillow_resample(5) == Image.HAMMING def test_get_pillow_resample_str(self): assert _get_pillow_resample('nearest') == Image.NEAREST assert _get_pillow_resample('NEAREST') == Image.NEAREST assert _get_pillow_resample('bilinear') == Image.BILINEAR assert _get_pillow_resample('bicubic') == Image.BICUBIC assert _get_pillow_resample('box') == Image.BOX assert _get_pillow_resample('hamming') == Image.HAMMING assert _get_pillow_resample('lanczos') == Image.LANCZOS def test_invalid_int(self): with pytest.raises(ValueError, match='Invalid interpolation value - 6.'): _get_pillow_resample(6) def test_invalid_str(self): with pytest.raises(ValueError, match='Invalid interpolation value - \'invalid\'.'): _get_pillow_resample('invalid') def test_invalid_type(self): with pytest.raises(TypeError, match='Input type must be int or str, got <class \'float\'>'): _get_pillow_resample(1.0) def test_resize_invalid(self): with pytest.raises(TypeError): _ = PillowResize(size='888') with pytest.raises(ValueError): _ = PillowResize(size=()) with pytest.raises(ValueError): _ = PillowResize(size=(1, 1, 4, 5, 1, 4)) def test_resize_invalid_input(self): resize = PillowResize(size=640) with pytest.raises(TypeError): _ = resize(np.random.randn(3, 284, 284)) @skipUnless(_TORCHVISION_AVAILABLE, 'Torchvision unavailable.') @pytest.mark.parametrize(*tmatrix({ 'src_image': [ 'png_full.png', 'png_full_m90.png', 'png_640.png', 'png_640_m90.png', ], 'size': [ 224, 384, 640, 888, ], 'resample': [ 'bilinear', Loading @@ -53,13 +98,14 @@ class TestPreprocessPillow: @skipUnless(_TORCHVISION_AVAILABLE, 'Torchvision unavailable.') @pytest.mark.parametrize(*tmatrix({ 'src_image': [ 'png_full.png', 'png_full_m90.png', 'png_640.png', 'png_640_m90.png', ], 'size': [ (224, 384), (384, 224), (256,), (999, 888), ], 'resample': [ 'bilinear', Loading @@ -82,3 +128,196 @@ class TestPreprocessPillow: interpolation=_get_interpolation_mode(resample), ) assert image_diff(presize(image), tresize(image), throw_exception=False) < 1e-3 @skipUnless(_TORCHVISION_AVAILABLE, 'Torchvision unavailable.') @pytest.mark.parametrize(*tmatrix({ 'src_image': [ 'png_640.png', 'png_640_m90.png', ], ('size', 'max_size'): [ (224, 384), (224, 256), (224, 225), (256, 384), (256, 257), ], 'resample': [ 'bilinear', 'bicubic', 'lanczos', 'box', 'hamming', 'nearest', ] })) def test_resize_pair_max_sizes(self, src_image, size, max_size, resample, image_diff): from torchvision.transforms import Resize image = Image.open(get_testfile(src_image)) presize = PillowResize( size=size, interpolation=_get_pillow_resample(resample), max_size=max_size, ) tresize = Resize( size=size, interpolation=_get_interpolation_mode(resample), max_size=max_size, ) assert image_diff(presize(image), tresize(image), throw_exception=False) < 1e-3 @pytest.mark.parametrize(['size', 'interpolation', 'max_size', 'antialias', 'repr_text'], [ (224, 0, None, True, 'PillowResize(size=224, interpolation=nearest, max_size=None, antialias=True)'), (224, 0, None, False, 'PillowResize(size=224, interpolation=nearest, max_size=None, antialias=False)'), (224, 2, None, True, 'PillowResize(size=224, interpolation=bilinear, max_size=None, antialias=True)'), (224, 2, None, False, 'PillowResize(size=224, interpolation=bilinear, max_size=None, antialias=False)'), (224, 3, None, True, 'PillowResize(size=224, interpolation=bicubic, max_size=None, antialias=True)'), (224, 3, None, False, 'PillowResize(size=224, interpolation=bicubic, max_size=None, antialias=False)'), (224, 4, None, True, 'PillowResize(size=224, interpolation=box, max_size=None, antialias=True)'), (224, 4, None, False, 'PillowResize(size=224, interpolation=box, max_size=None, antialias=False)'), (224, 5, None, True, 'PillowResize(size=224, interpolation=hamming, max_size=None, antialias=True)'), (224, 5, None, False, 'PillowResize(size=224, interpolation=hamming, max_size=None, antialias=False)'), (224, 1, None, True, 'PillowResize(size=224, interpolation=lanczos, max_size=None, antialias=True)'), (224, 1, None, False, 'PillowResize(size=224, interpolation=lanczos, max_size=None, antialias=False)'), (224, 0, 384, True, 'PillowResize(size=224, interpolation=nearest, max_size=384, antialias=True)'), (224, 0, 384, False, 'PillowResize(size=224, interpolation=nearest, max_size=384, antialias=False)'), (224, 2, 384, True, 'PillowResize(size=224, interpolation=bilinear, max_size=384, antialias=True)'), (224, 2, 384, False, 'PillowResize(size=224, interpolation=bilinear, max_size=384, antialias=False)'), (224, 3, 384, True, 'PillowResize(size=224, interpolation=bicubic, max_size=384, antialias=True)'), (224, 3, 384, False, 'PillowResize(size=224, interpolation=bicubic, max_size=384, antialias=False)'), (224, 4, 384, True, 'PillowResize(size=224, interpolation=box, max_size=384, antialias=True)'), (224, 4, 384, False, 'PillowResize(size=224, interpolation=box, max_size=384, antialias=False)'), (224, 5, 384, True, 'PillowResize(size=224, interpolation=hamming, max_size=384, antialias=True)'), (224, 5, 384, False, 'PillowResize(size=224, interpolation=hamming, max_size=384, antialias=False)'), (224, 1, 384, True, 'PillowResize(size=224, interpolation=lanczos, max_size=384, antialias=True)'), (224, 1, 384, False, 'PillowResize(size=224, interpolation=lanczos, max_size=384, antialias=False)'), (224, 0, 640, True, 'PillowResize(size=224, interpolation=nearest, max_size=640, antialias=True)'), (224, 0, 640, False, 'PillowResize(size=224, interpolation=nearest, max_size=640, antialias=False)'), (224, 2, 640, True, 'PillowResize(size=224, interpolation=bilinear, max_size=640, antialias=True)'), (224, 2, 640, False, 'PillowResize(size=224, interpolation=bilinear, max_size=640, antialias=False)'), (224, 3, 640, True, 'PillowResize(size=224, interpolation=bicubic, max_size=640, antialias=True)'), (224, 3, 640, False, 'PillowResize(size=224, interpolation=bicubic, max_size=640, antialias=False)'), (224, 4, 640, True, 'PillowResize(size=224, interpolation=box, max_size=640, antialias=True)'), (224, 4, 640, False, 'PillowResize(size=224, interpolation=box, max_size=640, antialias=False)'), (224, 5, 640, True, 'PillowResize(size=224, interpolation=hamming, max_size=640, antialias=True)'), (224, 5, 640, False, 'PillowResize(size=224, interpolation=hamming, max_size=640, antialias=False)'), (224, 1, 640, True, 'PillowResize(size=224, interpolation=lanczos, max_size=640, antialias=True)'), (224, 1, 640, False, 'PillowResize(size=224, interpolation=lanczos, max_size=640, antialias=False)'), (224, 0, 888, True, 'PillowResize(size=224, interpolation=nearest, max_size=888, antialias=True)'), (224, 0, 888, False, 'PillowResize(size=224, interpolation=nearest, max_size=888, antialias=False)'), (224, 2, 888, True, 'PillowResize(size=224, interpolation=bilinear, max_size=888, antialias=True)'), (224, 2, 888, False, 'PillowResize(size=224, interpolation=bilinear, max_size=888, antialias=False)'), (224, 3, 888, True, 'PillowResize(size=224, interpolation=bicubic, max_size=888, antialias=True)'), (224, 3, 888, False, 'PillowResize(size=224, interpolation=bicubic, max_size=888, antialias=False)'), (224, 4, 888, True, 'PillowResize(size=224, interpolation=box, max_size=888, antialias=True)'), (224, 4, 888, False, 'PillowResize(size=224, interpolation=box, max_size=888, antialias=False)'), (224, 5, 888, True, 'PillowResize(size=224, interpolation=hamming, max_size=888, antialias=True)'), (224, 5, 888, False, 'PillowResize(size=224, interpolation=hamming, max_size=888, antialias=False)'), (224, 1, 888, True, 'PillowResize(size=224, interpolation=lanczos, max_size=888, antialias=True)'), (224, 1, 888, False, 'PillowResize(size=224, interpolation=lanczos, max_size=888, antialias=False)'), (384, 0, None, True, 'PillowResize(size=384, interpolation=nearest, max_size=None, antialias=True)'), (384, 0, None, False, 'PillowResize(size=384, interpolation=nearest, max_size=None, antialias=False)'), (384, 2, None, True, 'PillowResize(size=384, interpolation=bilinear, max_size=None, antialias=True)'), (384, 2, None, False, 'PillowResize(size=384, interpolation=bilinear, max_size=None, antialias=False)'), (384, 3, None, True, 'PillowResize(size=384, interpolation=bicubic, max_size=None, antialias=True)'), (384, 3, None, False, 'PillowResize(size=384, interpolation=bicubic, max_size=None, antialias=False)'), (384, 4, None, True, 'PillowResize(size=384, interpolation=box, max_size=None, antialias=True)'), (384, 4, None, False, 'PillowResize(size=384, interpolation=box, max_size=None, antialias=False)'), (384, 5, None, True, 'PillowResize(size=384, interpolation=hamming, max_size=None, antialias=True)'), (384, 5, None, False, 'PillowResize(size=384, interpolation=hamming, max_size=None, antialias=False)'), (384, 1, None, True, 'PillowResize(size=384, interpolation=lanczos, max_size=None, antialias=True)'), (384, 1, None, False, 'PillowResize(size=384, interpolation=lanczos, max_size=None, antialias=False)'), (384, 0, 384, True, 'PillowResize(size=384, interpolation=nearest, max_size=384, antialias=True)'), (384, 0, 384, False, 'PillowResize(size=384, interpolation=nearest, max_size=384, antialias=False)'), (384, 2, 384, True, 'PillowResize(size=384, interpolation=bilinear, max_size=384, antialias=True)'), (384, 2, 384, False, 'PillowResize(size=384, interpolation=bilinear, max_size=384, antialias=False)'), (384, 3, 384, True, 'PillowResize(size=384, interpolation=bicubic, max_size=384, antialias=True)'), (384, 3, 384, False, 'PillowResize(size=384, interpolation=bicubic, max_size=384, antialias=False)'), (384, 4, 384, True, 'PillowResize(size=384, interpolation=box, max_size=384, antialias=True)'), (384, 4, 384, False, 'PillowResize(size=384, interpolation=box, max_size=384, antialias=False)'), (384, 5, 384, True, 'PillowResize(size=384, interpolation=hamming, max_size=384, antialias=True)'), (384, 5, 384, False, 'PillowResize(size=384, interpolation=hamming, max_size=384, antialias=False)'), (384, 1, 384, True, 'PillowResize(size=384, interpolation=lanczos, max_size=384, antialias=True)'), (384, 1, 384, False, 'PillowResize(size=384, interpolation=lanczos, max_size=384, antialias=False)'), (384, 0, 640, True, 'PillowResize(size=384, interpolation=nearest, max_size=640, antialias=True)'), (384, 0, 640, False, 'PillowResize(size=384, interpolation=nearest, max_size=640, antialias=False)'), (384, 2, 640, True, 'PillowResize(size=384, interpolation=bilinear, max_size=640, antialias=True)'), (384, 2, 640, False, 'PillowResize(size=384, interpolation=bilinear, max_size=640, antialias=False)'), (384, 3, 640, True, 'PillowResize(size=384, interpolation=bicubic, max_size=640, antialias=True)'), (384, 3, 640, False, 'PillowResize(size=384, interpolation=bicubic, max_size=640, antialias=False)'), (384, 4, 640, True, 'PillowResize(size=384, interpolation=box, max_size=640, antialias=True)'), (384, 4, 640, False, 'PillowResize(size=384, interpolation=box, max_size=640, antialias=False)'), (384, 5, 640, True, 'PillowResize(size=384, interpolation=hamming, max_size=640, antialias=True)'), (384, 5, 640, False, 'PillowResize(size=384, interpolation=hamming, max_size=640, antialias=False)'), (384, 1, 640, True, 'PillowResize(size=384, interpolation=lanczos, max_size=640, antialias=True)'), (384, 1, 640, False, 'PillowResize(size=384, interpolation=lanczos, max_size=640, antialias=False)'), (384, 0, 888, True, 'PillowResize(size=384, interpolation=nearest, max_size=888, antialias=True)'), (384, 0, 888, False, 'PillowResize(size=384, interpolation=nearest, max_size=888, antialias=False)'), (384, 2, 888, True, 'PillowResize(size=384, interpolation=bilinear, max_size=888, antialias=True)'), (384, 2, 888, False, 'PillowResize(size=384, interpolation=bilinear, max_size=888, antialias=False)'), (384, 3, 888, True, 'PillowResize(size=384, interpolation=bicubic, max_size=888, antialias=True)'), (384, 3, 888, False, 'PillowResize(size=384, interpolation=bicubic, max_size=888, antialias=False)'), (384, 4, 888, True, 'PillowResize(size=384, interpolation=box, max_size=888, antialias=True)'), (384, 4, 888, False, 'PillowResize(size=384, interpolation=box, max_size=888, antialias=False)'), (384, 5, 888, True, 'PillowResize(size=384, interpolation=hamming, max_size=888, antialias=True)'), (384, 5, 888, False, 'PillowResize(size=384, interpolation=hamming, max_size=888, antialias=False)'), (384, 1, 888, True, 'PillowResize(size=384, interpolation=lanczos, max_size=888, antialias=True)'), (384, 1, 888, False, 'PillowResize(size=384, interpolation=lanczos, max_size=888, antialias=False)'), ((224, 384), 0, None, True, 'PillowResize(size=(224, 384), interpolation=nearest, max_size=None, antialias=True)'), ((224, 384), 0, None, False, 'PillowResize(size=(224, 384), interpolation=nearest, max_size=None, antialias=False)'), ((224, 384), 2, None, True, 'PillowResize(size=(224, 384), interpolation=bilinear, max_size=None, antialias=True)'), ((224, 384), 2, None, False, 'PillowResize(size=(224, 384), interpolation=bilinear, max_size=None, antialias=False)'), ((224, 384), 3, None, True, 'PillowResize(size=(224, 384), interpolation=bicubic, max_size=None, antialias=True)'), ((224, 384), 3, None, False, 'PillowResize(size=(224, 384), interpolation=bicubic, max_size=None, antialias=False)'), ((224, 384), 4, None, True, 'PillowResize(size=(224, 384), interpolation=box, max_size=None, antialias=True)'), ( (224, 384), 4, None, False, 'PillowResize(size=(224, 384), interpolation=box, max_size=None, antialias=False)'), ((224, 384), 5, None, True, 'PillowResize(size=(224, 384), interpolation=hamming, max_size=None, antialias=True)'), ((224, 384), 5, None, False, 'PillowResize(size=(224, 384), interpolation=hamming, max_size=None, antialias=False)'), ((224, 384), 1, None, True, 'PillowResize(size=(224, 384), interpolation=lanczos, max_size=None, antialias=True)'), ((224, 384), 1, None, False, 'PillowResize(size=(224, 384), interpolation=lanczos, max_size=None, antialias=False)'), ([224, 284], 0, None, True, 'PillowResize(size=[224, 284], interpolation=nearest, max_size=None, antialias=True)'), ([224, 284], 0, None, False, 'PillowResize(size=[224, 284], interpolation=nearest, max_size=None, antialias=False)'), ([224, 284], 2, None, True, 'PillowResize(size=[224, 284], interpolation=bilinear, max_size=None, antialias=True)'), ([224, 284], 2, None, False, 'PillowResize(size=[224, 284], interpolation=bilinear, max_size=None, antialias=False)'), ([224, 284], 3, None, True, 'PillowResize(size=[224, 284], interpolation=bicubic, max_size=None, antialias=True)'), ([224, 284], 3, None, False, 'PillowResize(size=[224, 284], interpolation=bicubic, max_size=None, antialias=False)'), ([224, 284], 4, None, True, 'PillowResize(size=[224, 284], interpolation=box, max_size=None, antialias=True)'), ( [224, 284], 4, None, False, 'PillowResize(size=[224, 284], interpolation=box, max_size=None, antialias=False)'), ([224, 284], 5, None, True, 'PillowResize(size=[224, 284], interpolation=hamming, max_size=None, antialias=True)'), ([224, 284], 5, None, False, 'PillowResize(size=[224, 284], interpolation=hamming, max_size=None, antialias=False)'), ([224, 284], 1, None, True, 'PillowResize(size=[224, 284], interpolation=lanczos, max_size=None, antialias=True)'), ([224, 284], 1, None, False, 'PillowResize(size=[224, 284], interpolation=lanczos, max_size=None, antialias=False)'), ]) def test_resize_repr(self, size, interpolation, max_size, antialias, repr_text): size = PillowResize( size=size, interpolation=interpolation, max_size=max_size, antialias=antialias, ) assert repr(size) == repr_text