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) | |