Spaces:
Build error
Build error
| import numpy as np | |
| from PIL import Image | |
| import os | |
| from tqdm import tqdm | |
| import argparse | |
| import logging | |
| logger = logging.getLogger(__name__) | |
| """ | |
| Crops the black borders around images. | |
| """ | |
| def crop_border(x, constant=0.0): | |
| top = 0 | |
| while True: | |
| if np.sum(x[top] != constant) != 0.0: | |
| break | |
| top += 1 | |
| bottom = x.shape[0] - 1 | |
| while True: | |
| if np.sum(x[bottom] != constant) != 0.0: | |
| bottom += 1 | |
| break | |
| bottom -= 1 | |
| left = 0 | |
| while True: | |
| if np.sum(x[:, left] != constant) != 0.0: | |
| break | |
| left += 1 | |
| right = x.shape[1] - 1 | |
| while True: | |
| if np.sum(x[:, right] != constant) != 0.0: | |
| right += 1 | |
| break | |
| right -= 1 | |
| return x[top:bottom, left:right] | |
| def crop_images(path, constant_value): | |
| logger.info('Crop image borders...') | |
| for f in tqdm(os.listdir(path)): | |
| img = Image.open(os.path.join(path, f)) | |
| img = crop_border(np.array(img), constant=constant_value) | |
| img = Image.fromarray(img) | |
| img.save(os.path.join(path, f)) | |
| if __name__ == '__main__': | |
| parser = argparse.ArgumentParser() | |
| parser.add_argument('--image_dir', type=str, help='Path to the image directory.') | |
| parser.add_argument('--constant_value', type=float, default=0.0, help='Value of the border that should be cropped.') | |
| args = parser.parse_args() | |
| crop_images(args.image_dir, args.constant_value) | |