import cv2 import os import base64 import numpy as np from PIL import ImageFont, ImageDraw, Image import streamlit as st from modules.Cartoon.main import cartoon from modules.ThugLife.main import thug_life # from helper.utils import file_checker # from helper.descriptor import file_info # from helper.rcnn_utils import generate_rcnn_mask img_extensions = ["jpg","png","jpeg"] def get_binary_file_downloader_html(bin_file,file_label='File'): with open(bin_file,'rb') as f: data = f.read() bin_str = base64.b64encode(data).decode() href = f'

Download {file_label}

' return href def image_transformations(result,inp_img,filter,img_extension = "jpg"): result = result[:,:,:3] # filter_info(filter) if filter == "Basic Image Editing": gamma = st.slider("Gamma Correction",0.0,5.0,1.0,step = 0.1) saturation = st.slider("Saturation", 0.0, 2.0, 1.0, step=0.1) blurring = st.checkbox("Bluring", False) if blurring: col1,col2 = st.columns(2) blur_area = col1.slider("Blur Area",1,100,1,2) blur_intensity = col2.slider("Blur Intensity", 0, 500, 0, 1) result = cv2.GaussianBlur(result, (blur_area, 1), blur_intensity) apply_vignette = st.checkbox("Apply Vignette effect",False) if apply_vignette: vignette_effect = st.slider("Vignette Intensity",1,120,1) rows, cols = result.shape[:2] kernel_x = cv2.getGaussianKernel(cols, vignette_effect + 139) kernel_y = cv2.getGaussianKernel(rows, vignette_effect + 139) kernel = kernel_y*kernel_x.T filter = 255 * kernel / np.linalg.norm(kernel) vignette_img = np.copy(result) for i in range(3): vignette_img[:,:,i] = vignette_img[:,:,i]*filter result = vignette_img hsvImg = cv2.cvtColor(result, cv2.COLOR_BGR2HSV) hsvImg[..., 1] = np.clip(hsvImg[..., 1] * saturation, 0, 255) hsvImg[..., 2] = np.power((hsvImg[..., 2] / 255.0), 1 / (gamma + 0.1)) * 255.0 result = cv2.cvtColor(hsvImg, cv2.COLOR_HSV2BGR) elif filter == "Cartoonie": line_size = st.slider("Number of edges",3,101,7,2) blurVal = st.slider("Blurr effect",3,101,7,2) totalCols = st.slider("Total Color in images",2,100,11,1) result = cartoon(result,[line_size,blurVal,totalCols]) elif filter == "Thug Life": angle = st.slider("Angle",-360,360,0,1) x = st.slider("Shift X",-1.0,1.0,0.0,0.1) y = st.slider("Shift Y", -1.0, 1.0, 0.0, 0.1) result = thug_life(inp_img,angle,x,y) if np.all(result != None): st.image(result, use_column_width=True, clamp=True, channels="BGR") filename = img_extension[0] + "." + img_extension[-1] cv2.imwrite(filename, result) st.markdown(get_binary_file_downloader_html(filename, 'From Here '), unsafe_allow_html=True)