Spaces:
Running
on
CPU Upgrade
Running
on
CPU Upgrade
import gradio as gr | |
import kornia as K | |
from kornia.core import Tensor | |
from kornia.contrib import ImageStitcher | |
import kornia.feature as KF | |
import torch | |
import numpy as np | |
def inference(img_1, img_2): | |
# Convert numpy arrays to Tensors | |
img_1: Tensor = K.image_to_tensor(img_1, keepdim=False).float() / 255.0 | |
img_1 = img_1.unsqueeze(0) # Add batch dimension | |
img_2: Tensor = K.image_to_tensor(img_2, keepdim=False).float() / 255.0 | |
img_2 = img_2.unsqueeze(0) # Add batch dimension | |
IS = ImageStitcher(KF.LoFTR(pretrained='outdoor'), estimator='ransac') | |
with torch.no_grad(): | |
result = IS(img_1, img_2) | |
return K.tensor_to_image(result[0]) | |
examples = [ | |
['examples/foto1B.jpg', 'examples/foto1A.jpg'], | |
] | |
with gr.Blocks(theme='huggingface') as demo_app: | |
gr.Markdown("# Image Stitching using Kornia and LoFTR") | |
with gr.Row(): | |
input_image1 = gr.Image(label="Input Image 1") | |
input_image2 = gr.Image(label="Input Image 2") | |
output_image = gr.Image(label="Output Image") | |
stitch_button = gr.Button("Stitch Images") | |
stitch_button.click(fn=inference, inputs=[input_image1, input_image2], outputs=output_image) | |
gr.Examples(examples=examples, inputs=[input_image1, input_image2]) | |
if __name__ == "__main__": | |
demo_app.launch() |