show_image.py 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. from argparse import ArgumentParser
  2. import cv2
  3. from loader import (
  4. CV2Loader,
  5. LmdbLoader,
  6. PILLoader,
  7. TFRecordsLoader,
  8. TurboJpegLoader,
  9. methods,
  10. )
  11. def show_image(method, image):
  12. cv2.imshow(f"{method} image", image)
  13. k = cv2.waitKey(0) & 0xFF
  14. if k == 27: # check ESC pressing
  15. return True
  16. else:
  17. return False
  18. def show_images(loader):
  19. num_images = len(loader)
  20. loader = iter(loader)
  21. for idx in range(num_images):
  22. image, time = next(loader)
  23. print_info(image, time)
  24. stop = show_image(type(loader).__name__, image)
  25. if stop:
  26. cv2.destroyAllWindows()
  27. return
  28. def print_info(image, time):
  29. print(
  30. f"Image with {image.shape[0]}x{image.shape[1]} size has been loading for {time} seconds",
  31. )
  32. def demo(method, path):
  33. loader = methods[method](path) # get the image loader
  34. show_images(loader)
  35. if __name__ == "__main__":
  36. parser = ArgumentParser()
  37. parser.add_argument(
  38. "--path",
  39. "-p",
  40. type=str,
  41. help="path to image, folder of images, lmdb environment path or tfrecords database path",
  42. )
  43. parser.add_argument(
  44. "--method",
  45. required=True,
  46. choices=["cv2", "pil", "turbojpeg", "lmdb", "tfrecords"],
  47. help="Image loading methods to use in benchmark",
  48. )
  49. args = parser.parse_args()
  50. demo(args.method, args.path)