File size: 2,977 Bytes
d5465e6 96a96d9 d5465e6 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 |
import cv2
import os
import json
import argparse
import streamlit as st
@st.cache
def get_path_to_the_image():
parser = argparse.ArgumentParser()
parser.add_argument("--images_folder", default="images")
args = parser.parse_args()
return getattr(args, "images_folder")
@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
|