import subprocess import logging import cv2 import platform import readline import os def image_resize(image, width = None, height = None, inter = cv2.INTER_AREA): # initialize the dimensions of the image to be resized and # grab the image size dim = None (h, w) = image.shape[:2] # if both the width and height are None, then return the # original image if width is None and height is None: return image # check to see if the width is None if width is None: # calculate the ratio of the height and construct the # dimensions r = height / float(h) dim = (int(w * r), height) # otherwise, the height is None else: # calculate the ratio of the width and construct the # dimensions r = width / float(w) dim = (width, int(h * r)) # resize the image resized = cv2.resize(image, dim, interpolation = inter) # return the resized image return resized ''' Fetch input prompt with prefilled text. Parameters: prompt: Prompt message. text: Prefilled input. ''' def input_with_prefill(prompt, text): def hook(): readline.insert_text(text) readline.redisplay() readline.set_pre_input_hook(hook) result = input(prompt) readline.set_pre_input_hook() return result ''' Checks if the given string is a valid path. Parameters: string: String to be checked. ''' def dir_path(string): if os.path.isdir(string): return string else: raise NotADirectoryError(string) ''' Opens the given file with the platform default handler. Parameters: file: Path to the file. ''' def open_system(file): if platform.system() == 'Darwin': # macOS subprocess.call(('open', file)) elif platform.system() == 'Windows': # Windows os.startfile(file) else: # linux variants subprocess.call(('xdg-open', file))