Spaces:
Runtime error
Runtime error
gokaygokay
commited on
Commit
•
ae3c185
1
Parent(s):
39241a6
Update app.py
Browse files
app.py
CHANGED
@@ -6,16 +6,16 @@ import numpy as np
|
|
6 |
def stitch_images(image_mode, image1, image2, images, detector, matcher, estimator, blender_type, crop, wave_correct, progress=gr.Progress(track_tqdm=True)):
|
7 |
if image_mode == "Two Images":
|
8 |
if image1 is None or image2 is None:
|
9 |
-
return None
|
10 |
cv_images = [cv2.cvtColor(np.array(img), cv2.COLOR_RGB2BGR) for img in [image1, image2]]
|
11 |
else: # Multiple Images
|
12 |
if not images or len(images) < 2:
|
13 |
-
return None
|
14 |
cv_images = []
|
15 |
-
for img_path in images:
|
16 |
img = cv2.imread(img_path.name)
|
17 |
if img is None:
|
18 |
-
return None
|
19 |
cv_images.append(img)
|
20 |
|
21 |
try:
|
@@ -27,13 +27,14 @@ def stitch_images(image_mode, image1, image2, images, detector, matcher, estimat
|
|
27 |
crop=crop,
|
28 |
wave_correct_kind=wave_correct
|
29 |
)
|
|
|
30 |
panorama = stitcher.stitch(cv_images)
|
31 |
|
32 |
# Convert back to RGB for display
|
33 |
panorama_rgb = cv2.cvtColor(panorama, cv2.COLOR_BGR2RGB)
|
34 |
-
return panorama_rgb
|
35 |
except Exception as e:
|
36 |
-
return None
|
37 |
|
38 |
def update_image_input(choice):
|
39 |
if choice == "Two Images":
|
@@ -67,22 +68,23 @@ with gr.Blocks() as iface:
|
|
67 |
|
68 |
stitch_button = gr.Button("Stitch Images")
|
69 |
|
70 |
-
|
71 |
-
output_image = gr.Image(type="numpy", label="Stitched Panorama")
|
72 |
|
73 |
stitch_button.click(
|
74 |
stitch_images,
|
75 |
inputs=[image_mode, image1, image2, images, detector, matcher, estimator, blender_type, crop, wave_correct],
|
76 |
-
outputs=
|
77 |
)
|
78 |
|
79 |
gr.Examples(
|
80 |
-
[
|
81 |
["Two Images", "exposure_error_1.jpg", "exposure_error_2.jpg", None, "orb", "homography", "homography", "multiband", True, "horiz"],
|
82 |
["Multiple Images", None, None, ["weir_1.jpg", "weir_2.jpg", "weir_3.jpg"], "orb", "homography", "homography", "multiband", True, "horiz"]
|
83 |
],
|
84 |
inputs=[image_mode, image1, image2, images, detector, matcher, estimator, blender_type, crop, wave_correct],
|
85 |
-
|
|
|
|
|
86 |
)
|
87 |
|
88 |
iface.launch()
|
|
|
6 |
def stitch_images(image_mode, image1, image2, images, detector, matcher, estimator, blender_type, crop, wave_correct, progress=gr.Progress(track_tqdm=True)):
|
7 |
if image_mode == "Two Images":
|
8 |
if image1 is None or image2 is None:
|
9 |
+
return None
|
10 |
cv_images = [cv2.cvtColor(np.array(img), cv2.COLOR_RGB2BGR) for img in [image1, image2]]
|
11 |
else: # Multiple Images
|
12 |
if not images or len(images) < 2:
|
13 |
+
return None
|
14 |
cv_images = []
|
15 |
+
for img_path in progress.tqdm(images, desc="Loading images"):
|
16 |
img = cv2.imread(img_path.name)
|
17 |
if img is None:
|
18 |
+
return None
|
19 |
cv_images.append(img)
|
20 |
|
21 |
try:
|
|
|
27 |
crop=crop,
|
28 |
wave_correct_kind=wave_correct
|
29 |
)
|
30 |
+
progress(0.5, desc="Stitching images")
|
31 |
panorama = stitcher.stitch(cv_images)
|
32 |
|
33 |
# Convert back to RGB for display
|
34 |
panorama_rgb = cv2.cvtColor(panorama, cv2.COLOR_BGR2RGB)
|
35 |
+
return panorama_rgb
|
36 |
except Exception as e:
|
37 |
+
return None
|
38 |
|
39 |
def update_image_input(choice):
|
40 |
if choice == "Two Images":
|
|
|
68 |
|
69 |
stitch_button = gr.Button("Stitch Images")
|
70 |
|
71 |
+
output_image = gr.Image(type="numpy", label="Stitched Panorama")
|
|
|
72 |
|
73 |
stitch_button.click(
|
74 |
stitch_images,
|
75 |
inputs=[image_mode, image1, image2, images, detector, matcher, estimator, blender_type, crop, wave_correct],
|
76 |
+
outputs=output_image
|
77 |
)
|
78 |
|
79 |
gr.Examples(
|
80 |
+
examples=[
|
81 |
["Two Images", "exposure_error_1.jpg", "exposure_error_2.jpg", None, "orb", "homography", "homography", "multiband", True, "horiz"],
|
82 |
["Multiple Images", None, None, ["weir_1.jpg", "weir_2.jpg", "weir_3.jpg"], "orb", "homography", "homography", "multiband", True, "horiz"]
|
83 |
],
|
84 |
inputs=[image_mode, image1, image2, images, detector, matcher, estimator, blender_type, crop, wave_correct],
|
85 |
+
outputs=output_image,
|
86 |
+
fn=stitch_images,
|
87 |
+
cache_examples=True,
|
88 |
)
|
89 |
|
90 |
iface.launch()
|