Spaces:
Running
on
CPU Upgrade
Running
on
CPU Upgrade
File size: 1,310 Bytes
1cbfd2b b578661 626bf47 15ac7f4 50ba528 1cbfd2b 307c14f 20d1027 626bf47 15ac7f4 626bf47 1cbfd2b 50ba528 626bf47 50ba528 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
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() |