IliaLarchenko's picture
bugfix
597cce4
import cv2
import streamlit as st
import albumentations as A
from control import param2func
from utils import get_images_list, load_image, upload_image
def show_logo():
st.image(load_image("logo.png", "../images"), format="PNG")
def select_image(path_to_images: str, interface_type: str = "Simple"):
""" Show interface to choose the image, and load it
Args:
path_to_images (dict): path ot folder with images
interface_type (dict): mode of the interface used
Returns:
(status, image)
status (int):
0 - if everything is ok
1 - if there is error during loading of image file
2 - if user hasn't uploaded photo yet
"""
image_names_list = get_images_list(path_to_images)
if len(image_names_list) < 1:
return 1, 0
else:
if interface_type == "Professional":
image_name = st.sidebar.selectbox(
"Select an image:", image_names_list + ["Upload my image"]
)
else:
image_name = st.sidebar.selectbox("Select an image:", image_names_list)
if image_name != "Upload my image":
try:
image = load_image(image_name, path_to_images)
return 0, image
except cv2.error:
return 1, 0
else:
try:
image = upload_image()
return 0, image
except cv2.error:
return 1, 0
except AttributeError:
return 2, 0
def show_transform_control(transform_params: dict, n_for_hash: int) -> dict:
param_values = {"p": 1.0}
if len(transform_params) == 0:
st.sidebar.text("Transform has no parameters")
else:
for param in transform_params:
control_function = param2func[param["type"]]
if isinstance(param["param_name"], list):
returned_values = control_function(**param, n_for_hash=n_for_hash)
for name, value in zip(param["param_name"], returned_values):
param_values[name] = value
else:
param_values[param["param_name"]] = control_function(
**param, n_for_hash=n_for_hash
)
return param_values
def show_credentials():
st.markdown("* * *")
st.subheader("Credentials:")
st.markdown(
(
"Source: [github.com/IliaLarchenko/albumentations-demo]"
"(https://github.com/IliaLarchenko/albumentations-demo)"
)
)
st.markdown(
(
"Albumentations library: [github.com/albumentations-team/albumentations]"
"(https://github.com/albumentations-team/albumentations)"
)
)
st.markdown(
(
"Image Source: [pexels.com/royalty-free-images]"
"(https://pexels.com/royalty-free-images/)"
)
)
def get_transormations_params(transform_names: list, augmentations: dict) -> list:
transforms = []
for i, transform_name in enumerate(transform_names):
# select the params values
st.sidebar.subheader("Params of the " + transform_name)
param_values = show_transform_control(augmentations[transform_name], i)
transforms.append(getattr(A, transform_name)(**param_values))
return transforms
def show_docstring(obj_with_ds):
st.markdown("* * *")
st.subheader("Docstring for " + obj_with_ds.__class__.__name__)
st.text(obj_with_ds.__doc__)