|
import os |
|
|
|
from PIL import Image |
|
|
|
|
|
def get_file_paths(folder): |
|
image_file_paths = [] |
|
for root, dirs, filenames in os.walk(folder): |
|
filenames = sorted(filenames) |
|
for filename in filenames: |
|
input_path = os.path.abspath(root) |
|
file_path = os.path.join(input_path, filename) |
|
if filename.endswith('.png') or filename.endswith('.jpg'): |
|
image_file_paths.append(file_path) |
|
|
|
break |
|
return image_file_paths |
|
|
|
|
|
def align_images(a_file_paths, b_file_paths, target_path): |
|
if not os.path.exists(target_path): |
|
os.makedirs(target_path) |
|
|
|
for i in range(len(a_file_paths)): |
|
img_a = Image.open(a_file_paths[i]) |
|
img_b = Image.open(b_file_paths[i]) |
|
assert(img_a.size == img_b.size) |
|
|
|
aligned_image = Image.new("RGB", (img_a.size[0] * 2, img_a.size[1])) |
|
aligned_image.paste(img_a, (0, 0)) |
|
aligned_image.paste(img_b, (img_a.size[0], 0)) |
|
aligned_image.save(os.path.join(target_path, '{:04d}.jpg'.format(i))) |
|
|
|
|
|
if __name__ == '__main__': |
|
import argparse |
|
parser = argparse.ArgumentParser() |
|
parser.add_argument( |
|
'--dataset-path', |
|
dest='dataset_path', |
|
help='Which folder to process (it should have subfolders testA, testB, trainA and trainB' |
|
) |
|
args = parser.parse_args() |
|
|
|
dataset_folder = args.dataset_path |
|
print(dataset_folder) |
|
|
|
test_a_path = os.path.join(dataset_folder, 'testA') |
|
test_b_path = os.path.join(dataset_folder, 'testB') |
|
test_a_file_paths = get_file_paths(test_a_path) |
|
test_b_file_paths = get_file_paths(test_b_path) |
|
assert(len(test_a_file_paths) == len(test_b_file_paths)) |
|
test_path = os.path.join(dataset_folder, 'test') |
|
|
|
train_a_path = os.path.join(dataset_folder, 'trainA') |
|
train_b_path = os.path.join(dataset_folder, 'trainB') |
|
train_a_file_paths = get_file_paths(train_a_path) |
|
train_b_file_paths = get_file_paths(train_b_path) |
|
assert(len(train_a_file_paths) == len(train_b_file_paths)) |
|
train_path = os.path.join(dataset_folder, 'train') |
|
|
|
align_images(test_a_file_paths, test_b_file_paths, test_path) |
|
align_images(train_a_file_paths, train_b_file_paths, train_path) |
|
|