ammariii08 commited on
Commit
747e504
·
verified ·
1 Parent(s): e84b49f

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +16 -11
app.py CHANGED
@@ -477,13 +477,17 @@ def predict(
477
  del objects_mask
478
  gc.collect()
479
  print("Mask dilation completed in {:.2f} seconds".format(time.time() - t))
 
480
  Image.fromarray(dilated_mask).save("./outputs/scaled_mask_new.jpg")
 
481
  t = time.time()
482
  outlines, contours = extract_outlines(dilated_mask)
483
- shrunked_img_contours = cv2.drawContours(shrunked_img.copy(), contours, -1, (0, 0, 255), thickness=2)
 
 
484
  del shrunked_img
485
  gc.collect()
486
- print("Outline extraction completed in {:.2f} seconds".format(time.time() - t))
487
  t = time.time()
488
  use_finger_clearance = True if finger_clearance.lower() == "yes" else False
489
  doc, final_polygons_inch = save_dxf_spline(contours, scaling_factor, processed_size[0], finger_clearance=use_finger_clearance)
@@ -495,7 +499,7 @@ def predict(
495
  boundary_polygon = add_rectangular_boundary(doc, final_polygons_inch, boundary_length, boundary_width, boundary_unit)
496
  if boundary_polygon is not None:
497
  final_polygons_inch.append(boundary_polygon)
498
- # --- Annotation Text Placement (Bottom-Right) ---
499
  min_x = float("inf")
500
  min_y = float("inf")
501
  max_x = -float("inf")
@@ -525,19 +529,20 @@ def predict(
525
  text_entity.dxf.insert = (text_x, text_y)
526
  dxf_filepath = os.path.join("./outputs", "out.dxf")
527
  doc.saveas(dxf_filepath)
528
- # --- End Annotation Text Placement ---
529
- draw_polygons_inch(final_polygons_inch, shrunked_img_contours, scaling_factor, processed_size[0], color=(0,0,255), thickness=2)
530
- outlines_bgr = cv2.cvtColor(outlines, cv2.COLOR_GRAY2BGR)
531
- draw_polygons_inch(final_polygons_inch, outlines_bgr, scaling_factor, processed_size[0], color=(0,0,255), thickness=2)
 
532
  if annotation_text.strip():
533
  text_px = int(text_x / scaling_factor)
534
  text_py = int(processed_size[0] - (text_y / scaling_factor))
535
- cv2.putText(shrunked_img_contours, annotation_text.strip(), (text_px, text_py), cv2.FONT_HERSHEY_SIMPLEX, 1, (0,0,255), 2, cv2.LINE_AA)
536
- cv2.putText(outlines_bgr, annotation_text.strip(), (text_px, text_py), cv2.FONT_HERSHEY_SIMPLEX, 1, (0,0,255), 2, cv2.LINE_AA)
537
- outlines_color = cv2.cvtColor(outlines_bgr, cv2.COLOR_BGR2RGB)
538
  print("Total prediction time: {:.2f} seconds".format(time.time() - overall_start))
539
  return (
540
- cv2.cvtColor(shrunked_img_contours, cv2.COLOR_BGR2RGB),
541
  outlines_color,
542
  dxf_filepath,
543
  dilated_mask,
 
477
  del objects_mask
478
  gc.collect()
479
  print("Mask dilation completed in {:.2f} seconds".format(time.time() - t))
480
+ # Save the dilated mask for debugging if needed.
481
  Image.fromarray(dilated_mask).save("./outputs/scaled_mask_new.jpg")
482
+ # --- Extract outlines (only used for DXF generation) ---
483
  t = time.time()
484
  outlines, contours = extract_outlines(dilated_mask)
485
+ print("Outline extraction completed in {:.2f} seconds".format(time.time() - t))
486
+ # Instead of drawing the original contours, we now prepare a clean copy of the shrunk image for drawing new contours.
487
+ output_img = shrunked_img.copy()
488
  del shrunked_img
489
  gc.collect()
490
+ # --- Generate DXF using the extracted contours and apply finger clearance ---
491
  t = time.time()
492
  use_finger_clearance = True if finger_clearance.lower() == "yes" else False
493
  doc, final_polygons_inch = save_dxf_spline(contours, scaling_factor, processed_size[0], finger_clearance=use_finger_clearance)
 
499
  boundary_polygon = add_rectangular_boundary(doc, final_polygons_inch, boundary_length, boundary_width, boundary_unit)
500
  if boundary_polygon is not None:
501
  final_polygons_inch.append(boundary_polygon)
502
+ # --- Annotation Text Placement (Centered horizontally) ---
503
  min_x = float("inf")
504
  min_y = float("inf")
505
  max_x = -float("inf")
 
529
  text_entity.dxf.insert = (text_x, text_y)
530
  dxf_filepath = os.path.join("./outputs", "out.dxf")
531
  doc.saveas(dxf_filepath)
532
+ # --- Draw only the new contours (final_polygons_inch) on the clean output image ---
533
+ draw_polygons_inch(final_polygons_inch, output_img, scaling_factor, processed_size[0], color=(0,0,255), thickness=2)
534
+ # Also prepare an "Outlines" image based on a blank canvas for clarity.
535
+ new_outlines = np.zeros_like(output_img)
536
+ draw_polygons_inch(final_polygons_inch, new_outlines, scaling_factor, processed_size[0], color=(0,0,255), thickness=2)
537
  if annotation_text.strip():
538
  text_px = int(text_x / scaling_factor)
539
  text_py = int(processed_size[0] - (text_y / scaling_factor))
540
+ cv2.putText(output_img, annotation_text.strip(), (text_px, text_py), cv2.FONT_HERSHEY_SIMPLEX, 1, (0,0,255), 2, cv2.LINE_AA)
541
+ cv2.putText(new_outlines, annotation_text.strip(), (text_px, text_py), cv2.FONT_HERSHEY_SIMPLEX, 1, (0,0,255), 2, cv2.LINE_AA)
542
+ outlines_color = cv2.cvtColor(new_outlines, cv2.COLOR_BGR2RGB)
543
  print("Total prediction time: {:.2f} seconds".format(time.time() - overall_start))
544
  return (
545
+ cv2.cvtColor(output_img, cv2.COLOR_BGR2RGB),
546
  outlines_color,
547
  dxf_filepath,
548
  dilated_mask,