imaging.py 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. import os
  2. import piexif
  3. import logging
  4. import numpy as np
  5. from collections import OrderedDict
  6. from functools import partial
  7. from PIL import Image
  8. def check_readability(fpath):
  9. try:
  10. piexif.remove(fpath)
  11. except:
  12. pass
  13. try:
  14. im = Image.open(fpath)
  15. return 0
  16. except Exception as e:
  17. os.remove(fpath)
  18. return 1
  19. def is_accepted_image(fname, extensions):
  20. return any([fname.lower().endswith(ext) for ext in extensions])
  21. def get_content(folder, extensions):
  22. _check = partial(is_accepted_image, extensions=extensions)
  23. content = []
  24. for root, _, fnames in os.walk(folder):
  25. fnames = list(filter(_check, fnames))
  26. if not fnames: continue
  27. content.append([root, fnames])
  28. logging.info(f"Found {len(content)} sub-folders")
  29. return content
  30. def get_classnames(classnames):
  31. _names = np.loadtxt(classnames, dtype=str)
  32. class_names = OrderedDict()
  33. for name in _names:
  34. key = name.strip().partition(".")[-1].replace("_", " ").lower()
  35. class_names[key] = name
  36. logging.info(f"Parsed {len(class_names)} class names")
  37. return class_names