akameswa's picture
[bug] increase max interpolation step to 100
a311bab verified
raw
history blame contribute delete
No virus
1.65 kB
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)