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