File size: 3,061 Bytes
d5465e6 96a96d9 d5465e6 96a96d9 e2d5557 96a96d9 5d4bd93 e2d5557 96a96d9 e2d5557 96a96d9 dac9a79 6684d9c dac9a79 d5465e6 96a96d9 6684d9c d5465e6 13270de b30ce1c d5465e6 dac9a79 6684d9c dac9a79 d5465e6 6684d9c 52a0611 b30ce1c 6684d9c d5465e6 cc797bf d5465e6 b30ce1c |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 |
import cv2
import os
import json
import argparse
import streamlit as st
@st.cache
def get_arguments():
parser = argparse.ArgumentParser()
parser.add_argument("--image_folder", default="images")
parser.add_argument("--image_width", default=400, type=int)
args = parser.parse_args()
return getattr(args, "image_folder"), getattr(args, "image_width")
@st.cache
def get_images_list(path_to_folder: str) -> list:
"""Return the list of images from folder
Args:
path_to_folder (str): absolute or relative path to the folder with images
"""
image_names_list = [
x for x in os.listdir(path_to_folder) if x[-3:] in ["jpg", "peg", "png"]
]
return image_names_list
@st.cache
def load_image(image_name: str, path_to_folder: str, bgr2rgb: bool = True):
"""Load the image
Args:
image_name (str): name of the image
path_to_folder (str): path to the folder with image
bgr2rgb (bool): converts BGR image to RGB if True
"""
path_to_image = os.path.join(path_to_folder, image_name)
image = cv2.imread(path_to_image)
if bgr2rgb:
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
return image
@st.cache
def load_augmentations_config(
placeholder_params: dict, path_to_config: str = "configs/augmentations.json"
) -> dict:
"""Load the json config with params of all transforms
Args:
placeholder_params (dict): dict with values of placeholders
path_to_config (str): path to the json config file
"""
with open(path_to_config, "r") as config_file:
augmentations = json.load(config_file)
for name, params in augmentations.items():
params = [fill_placeholders(param, placeholder_params) for param in params]
return augmentations
def fill_placeholders(params: dict, placeholder_params: dict) -> dict:
"""Fill the placeholder values in the config file
Args:
params (dict): original params dict with placeholders
placeholder_params (dict): dict with values of placeholders
"""
# TODO: refactor
if "placeholder" in params:
placeholder_dict = params["placeholder"]
for k, v in placeholder_dict.items():
if isinstance(v, list):
params[k] = []
for element in v:
if element in placeholder_params:
params[k].append(placeholder_params[element])
else:
params[k].append(element)
else:
if v in placeholder_params:
params[k] = placeholder_params[v]
else:
params[k] = v
params.pop("placeholder")
return params
def get_params_string(param_values: dict) -> str:
"""Generate the string from the dict with parameters
Args:
param_values (dict): dict of "param_name" -> "param_value"
"""
params_string = ", ".join(
[k + "=" + str(param_values[k]) for k in param_values.keys()]
)
return params_string
|