import gradio as gr import cv2 import numpy as np def enhance_image(image, method, brightness=0, contrast=1.0): if image is None: return None img = np.array(image, dtype=np.uint8) if method == "Original": return img elif method == "Grayscale": gray = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY) return cv2.cvtColor(gray, cv2.COLOR_GRAY2RGB) elif method == "Histogram Equalization": gray = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY) eq = cv2.equalizeHist(gray) return cv2.cvtColor(eq, cv2.COLOR_GRAY2RGB) elif method == "Gaussian Blur": return cv2.GaussianBlur(img, (7, 7), 0) elif method == "Median Filtering": return cv2.medianBlur(img, 5) elif method == "Brightness/Contrast": adjusted = cv2.convertScaleAbs(img, alpha=contrast, beta=brightness) return adjusted else: return img def process(image, method, brightness, contrast): return enhance_image(image, method, brightness, contrast) with gr.Blocks() as demo: gr.Markdown("## 🖼️ Image Enhancement & Restoration GUI") with gr.Row(): with gr.Column(): img_input = gr.Image(type="numpy", label="Upload Image") method = gr.Radio( ["Original", "Grayscale", "Histogram Equalization", "Gaussian Blur", "Median Filtering", "Brightness/Contrast"], value="Original", label="Choose Method" ) brightness = gr.Slider(-100, 100, value=0, label="Brightness") contrast = gr.Slider(0.5, 3.0, value=1.0, step=0.1, label="Contrast") btn = gr.Button("Enhance Image") with gr.Column(): img_output = gr.Image(type="numpy", label="Output Image") btn.click(fn=process, inputs=[img_input, method, brightness, contrast], outputs=img_output) img_input = gr.Image(type="numpy", label="Upload Image", value="demo.png") demo.launch()