import gradio as gr import cv2 import numpy as np def sepia_filter(image): """ image comes in as a NumPy array (RGB) """ # Convert RGB (Gradio) → BGR (OpenCV) image = cv2.cvtColor(image, cv2.COLOR_RGB2BGR) sepia_kernel = np.array([ [0.272, 0.534, 0.131], [0.349, 0.686, 0.168], [0.393, 0.769, 0.189] ]) sepia = cv2.transform(image, sepia_kernel) sepia = np.clip(sepia, 0, 255).astype(np.uint8) # Convert back BGR → RGB for Gradio sepia = cv2.cvtColor(sepia, cv2.COLOR_BGR2RGB) return sepia app = gr.Interface( fn=sepia_filter, inputs=gr.Image(type="numpy", label="Input Image"), outputs=gr.Image(type="numpy", label="Sepia Output"), title="Simple Sepia Filter", description="Upload an image and apply a sepia filter using OpenCV." ) if __name__ == "__main__": app.launch()