generate_meta_info.py 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. import argparse
  2. import cv2
  3. import glob
  4. import os
  5. def main(args):
  6. txt_file = open(args.meta_info, 'w')
  7. for folder, root in zip(args.input, args.root):
  8. img_paths = sorted(glob.glob(os.path.join(folder, '*')))
  9. for img_path in img_paths:
  10. status = True
  11. if args.check:
  12. try:
  13. img = cv2.imread(img_path)
  14. except Exception as error:
  15. print(f'Read {img_path} error: {error}')
  16. status = False
  17. if img is None:
  18. status = False
  19. print(f'Img is None: {img_path}')
  20. if status:
  21. img_name = os.path.relpath(img_path, root)
  22. print(img_name)
  23. txt_file.write(f'{img_name}\n')
  24. if __name__ == '__main__':
  25. """Generate meta info (txt file) for only Ground-Truth images.
  26. It can also generate meta info from several folders into one txt file.
  27. """
  28. parser = argparse.ArgumentParser()
  29. parser.add_argument(
  30. '--input',
  31. nargs='+',
  32. default=['datasets/DF2K/DF2K_HR', 'datasets/DF2K/DF2K_multiscale'],
  33. help='Input folder, can be a list')
  34. parser.add_argument(
  35. '--root',
  36. nargs='+',
  37. default=['datasets/DF2K', 'datasets/DF2K'],
  38. help='Folder root, should have the length as input folders')
  39. parser.add_argument(
  40. '--meta_info',
  41. type=str,
  42. default='datasets/DF2K/meta_info/meta_info_DF2Kmultiscale.txt',
  43. help='txt path for meta info')
  44. parser.add_argument('--check', action='store_true', help='Read image to check whether it is ok')
  45. args = parser.parse_args()
  46. assert len(args.input) == len(args.root), ('Input folder and folder root should have the same length, but got '
  47. f'{len(args.input)} and {len(args.root)}.')
  48. os.makedirs(os.path.dirname(args.meta_info), exist_ok=True)
  49. main(args)