Spaces:
Runtime error
Runtime error
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: | |
# read the image once for check, as some images may have errors | |
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: | |
# get the relative path | |
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) | |