Spaces:
Sleeping
Sleeping
import os | |
from dataclasses import dataclass | |
import cv2 | |
import numpy as np | |
supported_types = [ | |
".bmp", | |
".dib", | |
".jpeg", | |
".jpg", | |
".jpe", | |
".jp2", | |
".png", | |
".webp", | |
".pbm", | |
".pgm", | |
".pp", | |
".pxm", | |
".pnm", | |
".pfm", | |
".sr", | |
".ras", | |
".tiff", | |
".tif", | |
".exr", | |
".hdr", | |
".pic", | |
] | |
class ImageWithFilename: | |
image: np.ndarray | |
image_name: str | |
def get_file_extension(file_path: str) -> str: | |
""" | |
Returns the extension of the given file path | |
""" | |
return os.path.splitext(file_path)[1] | |
def load_image(directory_path: str, image_name: str) -> ImageWithFilename: | |
""" | |
Returns an ImageWithFilename object from the given image name in the given directory | |
""" | |
image = cv2.imread(os.path.join(directory_path, image_name)) | |
return ImageWithFilename(image, image_name) | |
def load_images(directory_path: str) -> list[ImageWithFilename]: | |
""" | |
Returns a list of ImageWithFilename objects from the images in the given directory | |
""" | |
file_names = get_file_names(directory_path) | |
image_names = filter(lambda x: get_file_extension(x) in supported_types, file_names) | |
return [load_image(directory_path, image_name) for image_name in image_names] | |
def get_file_names(directory_path: str) -> list[str]: | |
""" | |
Returns the names of the files in the given directory | |
""" | |
if not os.path.exists(directory_path): | |
return [] | |
return [ | |
file_name | |
for file_name in os.listdir(directory_path) | |
if os.path.isfile(os.path.join(directory_path, file_name)) | |
] | |