import numpy as np import os import cv2 import json import albumentations as A import streamlit as st from control import * def load_image(image_name, path_to_folder = '../images'): path_to_image = os.path.join(path_to_folder, image_name) image = cv2.imread(path_to_image) image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB) return image st.title('Demo of Albumentations transforms') # selecting the image path_to_images = 'images' image_names_list = [x for x in os.listdir(path_to_images) if x[-3:] in ['jpg', 'peg', 'png']] image_name = st.sidebar.selectbox('Select an image:', image_names_list) image = load_image(image_name, path_to_images) # selecting the transformation path_to_config = 'configs/augmentations.json' with open(path_to_config, 'r') as config_file: augmentations = json.load(config_file) transform_name = st.sidebar.selectbox('Select a transformation:', sorted(list(augmentations.keys()))) transform_params = augmentations[transform_name] # show the transform options if len(transform_params) == 0: st.sidebar.text(transform_name + ' transform has no parameters') else: for param in transform_params: param['value'] = param2func[param['type']](**param) params_string = ", ".join([param['param_name'] + '=' + str(param['value']) for param in transform_params] + ['p=1.0']) params_string = '(' + params_string + ')' st.text(transform_name + params_string) st.text('Press R to update') exec('transform = A.' + transform_name + params_string) st.image([image, transform(image = image)['image']], caption = ['Original image', 'Transformed image'], width = 320) st.subheader('Docstring:') st.text(str(transform.__doc__)) st.text('') st.text('') st.subheader('Credentials:') st.text('Source: https://github.com/IliaLarchenko/albumentations-demo') st.text('Albumentation library: https://github.com/albumentations-team/albumentations') st.text('Image Source: https://www.pexels.com/royalty-free-images/')