(self, im_type, angle, keep_size, mode, padding_mode, align_corners)
| 60 | class TestRotate2D(NumpyImageTestCase2D): |
| 61 | @parameterized.expand(TEST_CASES_2D) |
| 62 | def test_correct_results(self, im_type, angle, keep_size, mode, padding_mode, align_corners): |
| 63 | init_param = { |
| 64 | "angle": angle, |
| 65 | "keep_size": keep_size, |
| 66 | "mode": mode, |
| 67 | "padding_mode": padding_mode, |
| 68 | "align_corners": align_corners, |
| 69 | "dtype": np.float64, |
| 70 | } |
| 71 | rotate_fn = Rotate(**init_param) |
| 72 | call_param = {"img": im_type(self.imt[0])} |
| 73 | rotated = rotate_fn(**call_param) |
| 74 | test_resampler_lazy(rotate_fn, rotated, init_param, call_param, atol=1e-4 if USE_COMPILED else 1e-6) |
| 75 | if keep_size: |
| 76 | np.testing.assert_allclose(self.imt[0].shape, rotated.shape) |
| 77 | _order = 0 if mode == "nearest" else 1 |
| 78 | if padding_mode == "border": |
| 79 | _mode = "nearest" |
| 80 | elif padding_mode == "reflection": |
| 81 | _mode = "reflect" |
| 82 | else: |
| 83 | _mode = "constant" |
| 84 | |
| 85 | expected = [] |
| 86 | for channel in self.imt[0]: |
| 87 | expected.append( |
| 88 | scipy.ndimage.rotate( |
| 89 | channel, -np.rad2deg(angle), (0, 1), not keep_size, order=_order, mode=_mode, prefilter=False |
| 90 | ) |
| 91 | ) |
| 92 | expected = np.stack(expected).astype(np.float32) |
| 93 | rotated = rotated.cpu() if isinstance(rotated, torch.Tensor) else rotated |
| 94 | good = np.sum(np.isclose(expected, rotated, atol=1e-3)) |
| 95 | self.assertLessEqual(np.abs(good - expected.size), 5, "diff at most 5 pixels") |
| 96 | |
| 97 | |
| 98 | class TestRotate3D(NumpyImageTestCase3D): |
nothing calls this directly
no test coverage detected