| import argparse |
| import cv2 |
| import glob |
| import os |
|
|
|
|
| def main(args): |
| txt_file = open(args.meta_info, 'w') |
| for folder, root in zip(args.input, args.root): |
| img_paths = sorted(glob.glob(os.path.join(folder, '*'))) |
| for img_path in img_paths: |
| status = True |
| if args.check: |
| |
| try: |
| img = cv2.imread(img_path) |
| except (IOError, OSError) as error: |
| print(f'Read {img_path} error: {error}') |
| status = False |
| if img is None: |
| status = False |
| print(f'Img is None: {img_path}') |
| if status: |
| |
| img_name = os.path.relpath(img_path, root) |
| print(img_name) |
| txt_file.write(f'{img_name}\n') |
|
|
|
|
| if __name__ == '__main__': |
| """Generate meta info (txt file) for only Ground-Truth images. |
| |
| It can also generate meta info from several folders into one txt file. |
| """ |
| parser = argparse.ArgumentParser() |
| parser.add_argument( |
| '--input', |
| nargs='+', |
| default=['datasets/DF2K/DF2K_HR', 'datasets/DF2K/DF2K_multiscale'], |
| help='Input folder, can be a list') |
| parser.add_argument( |
| '--root', |
| nargs='+', |
| default=['datasets/DF2K', 'datasets/DF2K'], |
| help='Folder root, should have the length as input folders') |
| parser.add_argument( |
| '--meta_info', |
| type=str, |
| default='datasets/DF2K/meta_info/meta_info_DF2Kmultiscale.txt', |
| help='txt path for meta info') |
| parser.add_argument('--check', action='store_true', help='Read image to check whether it is ok') |
| args = parser.parse_args() |
|
|
| assert len(args.input) == len(args.root), ('Input folder and folder root should have the same length, but got ' |
| f'{len(args.input)} and {len(args.root)}.') |
| os.makedirs(os.path.dirname(args.meta_info), exist_ok=True) |
|
|
| main(args) |
|
|