Spaces:
Running
Running
Update app.py
Browse files
app.py
CHANGED
@@ -17,6 +17,7 @@ import gc
|
|
17 |
from scalingtestupdated import calculate_scaling_factor
|
18 |
from scipy.interpolate import splprep, splev
|
19 |
from scipy.ndimage import gaussian_filter1d
|
|
|
20 |
|
21 |
|
22 |
birefnet = AutoModelForImageSegmentation.from_pretrained(
|
@@ -267,11 +268,23 @@ def detect_reference_square(img) -> np.ndarray:
|
|
267 |
def resize_img(img: np.ndarray, resize_dim):
|
268 |
return np.array(Image.fromarray(img).resize(resize_dim))
|
269 |
|
270 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
271 |
try:
|
272 |
reference_obj_img, scaling_box_coords = detect_reference_square(image)
|
273 |
-
except
|
274 |
-
raise gr.Error(
|
275 |
|
276 |
reference_obj_img = make_square(reference_obj_img)
|
277 |
reference_square_mask = remove_bg(reference_obj_img)
|
@@ -310,7 +323,7 @@ def predict(image, offset_inches):
|
|
310 |
|
311 |
# Ensure offset_inches is valid
|
312 |
if scaling_factor != 0:
|
313 |
-
offset_pixels = (
|
314 |
else:
|
315 |
offset_pixels = 1 # Default value in case of invalid scaling factor
|
316 |
|
@@ -329,30 +342,64 @@ def predict(image, offset_inches):
|
|
329 |
scaling_factor,
|
330 |
)
|
331 |
|
332 |
-
if __name__ == "__main__":
|
333 |
os.makedirs("./outputs", exist_ok=True)
|
334 |
|
|
|
335 |
ifer = gr.Interface(
|
336 |
fn=predict,
|
337 |
inputs=[
|
338 |
-
gr.Image(label="Input Image"),
|
339 |
-
gr.Number(label="Offset value for Mask(
|
|
|
340 |
],
|
341 |
outputs=[
|
342 |
-
gr.Image(label="
|
343 |
gr.Image(label="Outlines of Objects"),
|
344 |
gr.File(label="DXF file"),
|
345 |
gr.Image(label="Mask"),
|
346 |
gr.Textbox(
|
347 |
label="Scaling Factor(mm)",
|
348 |
-
placeholder="Every pixel is equal to mentioned number in
|
349 |
),
|
350 |
],
|
351 |
examples=[
|
352 |
-
["./examples/Test20.jpg",
|
353 |
-
["./examples/Test21.jpg",
|
354 |
-
["./examples/Test22.jpg",
|
355 |
-
["./examples/Test23.jpg",
|
356 |
],
|
357 |
)
|
358 |
-
ifer.launch(share=True)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
17 |
from scalingtestupdated import calculate_scaling_factor
|
18 |
from scipy.interpolate import splprep, splev
|
19 |
from scipy.ndimage import gaussian_filter1d
|
20 |
+
import json
|
21 |
|
22 |
|
23 |
birefnet = AutoModelForImageSegmentation.from_pretrained(
|
|
|
268 |
def resize_img(img: np.ndarray, resize_dim):
|
269 |
return np.array(Image.fromarray(img).resize(resize_dim))
|
270 |
|
271 |
+
|
272 |
+
# Load selected language file
|
273 |
+
def load_language(lang_code):
|
274 |
+
with open(f'./locales/{lang_code}.json', 'r') as f:
|
275 |
+
return json.load(f)
|
276 |
+
|
277 |
+
def predict(image, offset, language):
|
278 |
+
# Load the selected language
|
279 |
+
translations = load_language(language)
|
280 |
+
|
281 |
+
if offset <= -1:
|
282 |
+
raise gr.Error(translations["offset_error"])
|
283 |
+
|
284 |
try:
|
285 |
reference_obj_img, scaling_box_coords = detect_reference_square(image)
|
286 |
+
except:
|
287 |
+
raise gr.Error(translations["offset_error"])
|
288 |
|
289 |
reference_obj_img = make_square(reference_obj_img)
|
290 |
reference_square_mask = remove_bg(reference_obj_img)
|
|
|
323 |
|
324 |
# Ensure offset_inches is valid
|
325 |
if scaling_factor != 0:
|
326 |
+
offset_pixels = (offset / scaling_factor) * 2 + 1
|
327 |
else:
|
328 |
offset_pixels = 1 # Default value in case of invalid scaling factor
|
329 |
|
|
|
342 |
scaling_factor,
|
343 |
)
|
344 |
|
345 |
+
if __name__ == "__main__":
|
346 |
os.makedirs("./outputs", exist_ok=True)
|
347 |
|
348 |
+
# Language selector in UI
|
349 |
ifer = gr.Interface(
|
350 |
fn=predict,
|
351 |
inputs=[
|
352 |
+
gr.Image(label="Input Image", type="numpy"),
|
353 |
+
gr.Number(label="Offset value for Mask(mm)", value=2),
|
354 |
+
gr.Dropdown(["en", "nl"], label="Language", value="en") # Default English
|
355 |
],
|
356 |
outputs=[
|
357 |
+
gr.Image(label="Output Image"),
|
358 |
gr.Image(label="Outlines of Objects"),
|
359 |
gr.File(label="DXF file"),
|
360 |
gr.Image(label="Mask"),
|
361 |
gr.Textbox(
|
362 |
label="Scaling Factor(mm)",
|
363 |
+
placeholder="Every pixel is equal to mentioned number in millimeters",
|
364 |
),
|
365 |
],
|
366 |
examples=[
|
367 |
+
["./examples/Test20.jpg", 2, "en"],
|
368 |
+
["./examples/Test21.jpg", 2, "en"],
|
369 |
+
["./examples/Test22.jpg", 2, "nl"],
|
370 |
+
["./examples/Test23.jpg", 2, "nl"],
|
371 |
],
|
372 |
)
|
373 |
+
ifer.launch(share=True)
|
374 |
+
|
375 |
+
|
376 |
+
# if __name__ == "__main__":
|
377 |
+
# os.makedirs("./outputs", exist_ok=True)
|
378 |
+
|
379 |
+
# ifer = gr.Interface(
|
380 |
+
# fn=predict,
|
381 |
+
# inputs=[
|
382 |
+
# gr.Image(label="Input Image"),
|
383 |
+
# gr.Number(label="Offset value for Mask(mm)", value=2),
|
384 |
+
# ],
|
385 |
+
# outputs=[
|
386 |
+
# gr.Image(label="Ouput Image"),
|
387 |
+
# gr.Image(label="Outlines of Objects"),
|
388 |
+
# gr.File(label="DXF file"),
|
389 |
+
# gr.Image(label="Mask"),
|
390 |
+
# gr.Textbox(
|
391 |
+
# label="Scaling Factor(mm)",
|
392 |
+
# placeholder="Every pixel is equal to mentioned number in millimeters",
|
393 |
+
# ),
|
394 |
+
# ],
|
395 |
+
# examples=[
|
396 |
+
# ["./examples/Test20.jpg", 2],
|
397 |
+
# ["./examples/Test21.jpg", 2],
|
398 |
+
# ["./examples/Test22.jpg", 2],
|
399 |
+
# ["./examples/Test23.jpg", 2],
|
400 |
+
# ],
|
401 |
+
# )
|
402 |
+
# ifer.launch(share=True)
|
403 |
+
|
404 |
+
|
405 |
+
|