Spaces:
Sleeping
Sleeping
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 |
+
|