Merge pull request !4694 from guozhijian/fix_randomaffine_errtags/v0.7.0-beta
| @@ -262,7 +262,8 @@ class RandomAffine(cde.RandomAffineOp): | |||||
| - Inter.BICUBIC, means resample method is bicubic interpolation. | - Inter.BICUBIC, means resample method is bicubic interpolation. | ||||
| fill_value (tuple or int, optional): Optional fill_value to fill the area outside the transform | fill_value (tuple or int, optional): Optional fill_value to fill the area outside the transform | ||||
| in the output image. Used only in Pillow versions > 5.0.0 (default=0, filling is performed). | |||||
| in the output image. There must be three elements in tuple and the value of single element is [0, 255]. | |||||
| Used only in Pillow versions > 5.0.0 (default=0, filling is performed). | |||||
| Raises: | Raises: | ||||
| ValueError: If degrees is negative. | ValueError: If degrees is negative. | ||||
| @@ -274,6 +275,7 @@ class RandomAffine(cde.RandomAffineOp): | |||||
| TypeError: If translate is specified but is not list or a tuple of length 2. | TypeError: If translate is specified but is not list or a tuple of length 2. | ||||
| TypeError: If scale is not a list or tuple of length 2.'' | TypeError: If scale is not a list or tuple of length 2.'' | ||||
| TypeError: If shear is not a list or tuple of length 2 or 4. | TypeError: If shear is not a list or tuple of length 2 or 4. | ||||
| TypeError: If fill_value is not a single integer or a 3-tuple. | |||||
| Examples: | Examples: | ||||
| >>> c_transform.RandomAffine(degrees=15, translate=(0.1, 0.1), scale=(0.9, 1.1)) | >>> c_transform.RandomAffine(degrees=15, translate=(0.1, 0.1), scale=(0.9, 1.1)) | ||||
| @@ -509,6 +509,8 @@ def check_random_affine(method): | |||||
| if len(scale) == 2: | if len(scale) == 2: | ||||
| for i, s in enumerate(scale): | for i, s in enumerate(scale): | ||||
| check_positive(s, "scale[{}]".format(i)) | check_positive(s, "scale[{}]".format(i)) | ||||
| if scale[0] > scale[1]: | |||||
| raise ValueError("Input scale[1] must be equal to or greater than scale[0].") | |||||
| else: | else: | ||||
| raise TypeError("scale should be a list or tuple of length 2.") | raise TypeError("scale should be a list or tuple of length 2.") | ||||
| @@ -519,6 +521,11 @@ def check_random_affine(method): | |||||
| else: | else: | ||||
| if len(shear) not in (2, 4): | if len(shear) not in (2, 4): | ||||
| raise TypeError("shear must be of length 2 or 4.") | raise TypeError("shear must be of length 2 or 4.") | ||||
| if len(shear) == 2 and shear[0] > shear[1]: | |||||
| raise ValueError("Input shear[1] must be equal to or greater than shear[0]") | |||||
| if len(shear) == 4 and (shear[0] > shear[1] or shear[2] > shear[3]): | |||||
| raise ValueError("Input shear[1] must be equal to or greater than shear[0] and " | |||||
| "shear[3] must be equal to or greater than shear[2].") | |||||
| type_check(resample, (Inter,), "resample") | type_check(resample, (Inter,), "resample") | ||||
| @@ -190,6 +190,12 @@ def test_random_affine_exception_scale_value(): | |||||
| logger.info("Got an exception in DE: {}".format(str(e))) | logger.info("Got an exception in DE: {}".format(str(e))) | ||||
| assert str(e) == "Input scale[0] must be greater than 0." | assert str(e) == "Input scale[0] must be greater than 0." | ||||
| try: | |||||
| _ = py_vision.RandomAffine(degrees=15, scale=(2.0, 1.1)) | |||||
| except ValueError as e: | |||||
| logger.info("Got an exception in DE: {}".format(str(e))) | |||||
| assert str(e) == "Input scale[1] must be equal to or greater than scale[0]." | |||||
| def test_random_affine_exception_shear_value(): | def test_random_affine_exception_shear_value(): | ||||
| """ | """ | ||||
| @@ -202,6 +208,26 @@ def test_random_affine_exception_shear_value(): | |||||
| logger.info("Got an exception in DE: {}".format(str(e))) | logger.info("Got an exception in DE: {}".format(str(e))) | ||||
| assert str(e) == "Input shear must be greater than 0." | assert str(e) == "Input shear must be greater than 0." | ||||
| try: | |||||
| _ = py_vision.RandomAffine(degrees=15, shear=(5, 1)) | |||||
| except ValueError as e: | |||||
| logger.info("Got an exception in DE: {}".format(str(e))) | |||||
| assert str(e) == "Input shear[1] must be equal to or greater than shear[0]" | |||||
| try: | |||||
| _ = py_vision.RandomAffine(degrees=15, shear=(5, 1, 2, 8)) | |||||
| except ValueError as e: | |||||
| logger.info("Got an exception in DE: {}".format(str(e))) | |||||
| assert str(e) == "Input shear[1] must be equal to or greater than shear[0] and " \ | |||||
| "shear[3] must be equal to or greater than shear[2]." | |||||
| try: | |||||
| _ = py_vision.RandomAffine(degrees=15, shear=(5, 9, 2, 1)) | |||||
| except ValueError as e: | |||||
| logger.info("Got an exception in DE: {}".format(str(e))) | |||||
| assert str(e) == "Input shear[1] must be equal to or greater than shear[0] and " \ | |||||
| "shear[3] must be equal to or greater than shear[2]." | |||||
| def test_random_affine_exception_degrees_size(): | def test_random_affine_exception_degrees_size(): | ||||
| """ | """ | ||||