import numpy as np import gradio as gr import cv2 # Define a function to apply a more aesthetically pleasing sharpening filter to an image def enhance(input_img, brightness): # Convert the image to float32 for better precision input_img = input_img.astype(np.float32) / 255.0 # Define a more subtle sharpening filter sharpen_filter = np.array([ [0, -1, 0], [-1, 5, -1], [0, -1, 0] ]) # Apply the filter to the image sharpened_img = cv2.filter2D(input_img, -1, sharpen_filter) # Apply a slight Gaussian blur to smooth out the sharpening effect smoothed_img = cv2.GaussianBlur(sharpened_img, (3, 3), 0) # Adjust brightness smoothed_img = np.clip(smoothed_img + brightness, 0, 1) # Normalize the image to the range [0, 1] smoothed_img = smoothed_img / smoothed_img.max() # Convert back to uint8 for display smoothed_img = (smoothed_img * 255).astype(np.uint8) return smoothed_img # Create a Gradio interface for the enhancement function demo = gr.Interface( enhance, inputs=[gr.Image(), gr.Slider(-1.0, 1.0, value=0.0, label="Brightness")], outputs="image" ) # Launch the Gradio app demo.launch(show_error=True)