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