Path: blob/master/Efficient-image-loading/show_image.py
3118 views
from argparse import ArgumentParser12import cv234from loader import (5CV2Loader,6LmdbLoader,7PILLoader,8TFRecordsLoader,9TurboJpegLoader,10methods,11)121314def show_image(method, image):15cv2.imshow(f"{method} image", image)16k = cv2.waitKey(0) & 0xFF17if k == 27: # check ESC pressing18return True19else:20return False212223def show_images(loader):24num_images = len(loader)25loader = iter(loader)26for idx in range(num_images):27image, time = next(loader)28print_info(image, time)29stop = show_image(type(loader).__name__, image)30if stop:31cv2.destroyAllWindows()32return333435def print_info(image, time):36print(37f"Image with {image.shape[0]}x{image.shape[1]} size has been loading for {time} seconds",38)394041def demo(method, path):42loader = methods[method](path) # get the image loader43show_images(loader)444546if __name__ == "__main__":47parser = ArgumentParser()4849parser.add_argument(50"--path",51"-p",52type=str,53help="path to image, folder of images, lmdb environment path or tfrecords database path",54)55parser.add_argument(56"--method",57required=True,58choices=["cv2", "pil", "turbojpeg", "lmdb", "tfrecords"],59help="Image loading methods to use in benchmark",60)6162args = parser.parse_args()6364demo(args.method, args.path)656667