Image-Filter / app.py
cyrus-spc's picture
Addimg app.py
7dc31c6
import gradio as gr
from PIL import Image, ImageOps, ImageFilter
import cv2
import numpy as np
def apply_filter(image, filter_type):
# Convert PIL image to OpenCV image
img = np.array(image.convert("RGB"))
if filter_type == "Grayscale":
img = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)
img = cv2.cvtColor(img, cv2.COLOR_GRAY2RGB)
elif filter_type == "Invert":
img = cv2.bitwise_not(img)
elif filter_type == "Blur":
img = cv2.GaussianBlur(img, (15, 15), 0)
elif filter_type == "Edge Detection":
gray = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)
edges = cv2.Canny(gray, 100, 200)
img = cv2.cvtColor(edges, cv2.COLOR_GRAY2RGB)
return Image.fromarray(img)
# Gradio UI
iface = gr.Interface(
fn=apply_filter,
inputs=[
gr.Image(type="pil"),
gr.Radio(["Grayscale", "Invert", "Blur", "Edge Detection"], label="Choose a filter")
],
outputs=gr.Image(type="pil"),
title="🖼️ Image Filter App",
description="Upload an image and apply various filters!"
)
iface.launch()