mlbench123 commited on
Commit
6ad3c18
·
verified ·
1 Parent(s): 46b2bd9

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +61 -14
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
- def predict(image, offset_inches):
 
 
 
 
 
 
 
 
 
 
 
 
271
  try:
272
  reference_obj_img, scaling_box_coords = detect_reference_square(image)
273
- except Exception as e:
274
- raise gr.Error(f"Unable to DETECT COIN, please take another picture with different magnification level! Error: {e}")
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 = (offset_inches / scaling_factor) * 2 + 1
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(inches)", value=0.075),
 
340
  ],
341
  outputs=[
342
- gr.Image(label="Ouput Image"),
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 inches",
349
  ),
350
  ],
351
  examples=[
352
- ["./examples/Test20.jpg", 0.075],
353
- ["./examples/Test21.jpg", 0.075],
354
- ["./examples/Test22.jpg", 0.075],
355
- ["./examples/Test23.jpg", 0.075],
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
+