def test_lambda_transform(): def negate_image(image, **kwargs): return -image def one_hot_mask(mask, num_channels, **kwargs): new_mask = np.eye(num_channels, dtype=np.uint8)[mask] return new_mask def vflip_bbox(bbox, **kwargs): return F.bbox_vflip(bbox, **kwargs) def vflip_keypoint(keypoint, **kwargs): return F.keypoint_vflip(keypoint, **kwargs) aug = A.Lambda(image=negate_image, mask=partial(one_hot_mask, num_channels=16), bbox=vflip_bbox, keypoint=vflip_keypoint, p=1) output = aug( image=np.ones((10, 10, 3), dtype=np.float32), mask=np.tile(np.arange(0, 10), (10, 1)), bboxes=[(10, 15, 25, 35)], keypoints=[(20, 30, 40, 50)], ) assert (output["image"] < 0).all() assert output["mask"].shape[2] == 16 # num_channels assert output["bboxes"] == [F.bbox_vflip((10, 15, 25, 35), 10, 10)] assert output["keypoints"] == [F.keypoint_vflip((20, 30, 40, 50), 10, 10)]
def vflip_bbox(bbox, **kwargs): return F.bbox_vflip(bbox, **kwargs)
def test_bbox_vflip(): assert F.bbox_vflip((0.1, 0.2, 0.6, 0.5), 100, 200) == (0.1, 0.5, 0.6, 0.8)
def test_bbox_vflip(): assert F.bbox_vflip((0.1, 0.2, 0.6, 0.5), 100, 200) == (0.1, 0.5, 0.6, 0.8) def test_bbox_hflip(): assert F.bbox_hflip((0.1, 0.2, 0.6, 0.5), 100, 200) == (0.4, 0.2, 0.9, 0.5) @pytest.mark.parametrize( ["code", "func"], [ [0, F.bbox_vflip], [1, F.bbox_hflip], [ -1, lambda bbox, rows, cols: F.bbox_vflip( F.bbox_hflip(bbox, rows, cols), rows, cols) ], ], ) def test_bbox_flip(code, func): rows, cols = 100, 200 bbox = [0.1, 0.2, 0.6, 0.5] assert F.bbox_flip(bbox, code, rows, cols) == func(bbox, rows, cols) def test_crop_bbox_by_coords(): cropped_bbox = A.crop_bbox_by_coords((0.5, 0.2, 0.9, 0.7), (18, 18, 82, 82), 64, 64, 100, 100) assert cropped_bbox == (0.5, 0.03125, 1.125, 0.8125)
def test_bbox_vflip(bbox, expected_output, input_type): bbox = input_type(bbox) flipped_bbox = F.bbox_vflip(bbox, cols=200, rows=100) assert isinstance(flipped_bbox, tuple) assert np.array_equal(flipped_bbox, expected_output)
def test_bbox_vflip(): assert F.bbox_vflip([0.1, 0.2, 0.6, 0.5], 100, 200) == [0.1, 0.5, 0.6, 0.8]
def test_bbox_vflip(bbox, expected_output, input_type): bbox = input_type(bbox) flipped_bbox = F.bbox_vflip(bbox, cols=200, rows=100) assert isinstance(flipped_bbox, tuple) assert np.array_equal(flipped_bbox, expected_output)