stylegan2-flax-tpu / dataset_utils /crop_image_borders.py
akhaliq's picture
akhaliq HF staff
add files
81170fd
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)