Spaces:
Runtime error
Runtime error
import gradio as gr | |
import numpy as np | |
from PIL import Image | |
def interpolate_images(img1, img2, num_steps): | |
# Convert images to numpy arrays | |
img1_array = np.array(Image.open(img1).convert('RGB')) | |
img2_array = np.array(Image.open(img2).convert('RGB')) | |
# Ensure both images have the same dimensions | |
min_height = min(img1_array.shape[0], img2_array.shape[0]) | |
min_width = min(img1_array.shape[1], img2_array.shape[1]) | |
img1_array = img1_array[:min_height, :min_width] | |
img2_array = img2_array[:min_height, :min_width] | |
# Generate interpolation weights | |
weights = np.linspace(0, 1, num_steps) | |
# Perform interpolation | |
interpolated_images = [] | |
for weight in weights: | |
interpolated = img1_array * (1 - weight) + img2_array * weight | |
interpolated = interpolated.astype(np.uint8) | |
interpolated_images.append(Image.fromarray(interpolated)) | |
return interpolated_images | |
def interpolate_and_display(img1, img2, num_steps): | |
interpolated_images = interpolate_images(img1, img2, num_steps+2) | |
return interpolated_images | |
# Create the Gradio interface | |
iface = gr.Interface( | |
fn=interpolate_and_display, | |
inputs=[ | |
gr.Image(type="filepath", label="Image A"), | |
gr.Image(type="filepath", label="Image B"), | |
gr.Slider(minimum=0, maximum=100, step=1, label="Number of interpolation steps") | |
], | |
outputs=gr.Gallery(label="Interpolated Images"), | |
title="Image Interpolation", | |
description="Upload two images and specify the number of interpolation steps to generate intermediate images." | |
) | |
# Launch the app | |
iface.launch(debug=True) |