← Back to all transforms
BBoxSafeRandomCrop
Description
Crop a random part of the input without loss of bounding boxes. This transform performs a random crop of the input image while ensuring that all bounding boxes remain within the cropped area. It's particularly useful for object detection tasks where preserving all objects in the image is crucial. Args: erosion_rate (float): A value between 0.0 and 1.0 that determines the minimum allowable size of the crop as a fraction of the original image size. For example, an erosion_rate of 0.2 means the crop will be at least 80% of the original image height. Default: 0.0 (no minimum size). p (float): Probability of applying the transform. Default: 1.0. Targets: image, mask, bboxes, keypoints Image types: uint8, float32 Note: This transform ensures that all bounding boxes in the original image are fully contained within the cropped area. If it's not possible to find such a crop (e.g., when bounding boxes are too spread out), it will default to cropping the entire image. Example: >>> import numpy as np >>> import albumentations as A >>> image = np.ones((300, 300, 3), dtype=np.uint8) >>> bboxes = [(10, 10, 50, 50), (100, 100, 150, 150)] >>> transform = A.Compose([ ... A.BBoxSafeRandomCrop(erosion_rate=0.2, p=1.0), ... ], bbox_params=A.BboxParams(format='pascal_voc', label_fields=['labels'])) >>> transformed = transform(image=image, bboxes=bboxes, labels=['cat', 'dog']) >>> transformed_image = transformed['image'] >>> transformed_bboxes = transformed['bboxes']
Parameters
- erosion_rate: float (default: 0)
- p: float (default: 1)
Targets
- Image
- Mask
- BBoxes
- Keypoints
Try it out
ⓘ