vitordigitizing commited on
Commit
ea12eaa
·
verified ·
1 Parent(s): 58da429

Update faceless_processing.py

Browse files
Files changed (1) hide show
  1. faceless_processing.py +10 -4
faceless_processing.py CHANGED
@@ -146,6 +146,8 @@ class LineartConfig:
146
 
147
  # AUMENTADO: Faca implacável para traços curtos
148
  lineart_min_perimeter: float = 115.0
 
 
149
 
150
  interior_erode_size: int = 1
151
  interior_line_thickness: int = 3
@@ -515,18 +517,22 @@ def build_interior_edges(rgb: np.ndarray, subject_mask: np.ndarray, cfg: Lineart
515
  eroded_mask = cv2.erode(subject_mask, kernel_erode, iterations=1)
516
  edges = cv2.bitwise_and(edges, eroded_mask)
517
 
518
- # Aspirador de Sujeiras
519
- kernel_clean = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (3, 3))
520
- edges = cv2.morphologyEx(edges, cv2.MORPH_OPEN, kernel_clean, iterations=1)
 
521
 
522
  contours, _ = cv2.findContours(edges, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)
523
  filtered = np.zeros_like(edges)
 
 
 
524
  for cnt in contours:
525
  perimeter = cv2.arcLength(cnt, False)
526
  area = cv2.contourArea(cnt)
527
 
528
  # BARREIRA EXTREMA: Elimina pontos isolados e traços curtos
529
- if perimeter < cfg.lineart_min_perimeter or area < 40.0:
530
  continue
531
 
532
  cv2.drawContours(filtered, [cnt], -1, 255, cfg.interior_line_thickness)
 
146
 
147
  # AUMENTADO: Faca implacável para traços curtos
148
  lineart_min_perimeter: float = 115.0
149
+ lineart_min_area: float = 40.0
150
+ lineart_morph_open: bool = True
151
 
152
  interior_erode_size: int = 1
153
  interior_line_thickness: int = 3
 
517
  eroded_mask = cv2.erode(subject_mask, kernel_erode, iterations=1)
518
  edges = cv2.bitwise_and(edges, eroded_mask)
519
 
520
+ if getattr(cfg, 'lineart_morph_open', True):
521
+ # Aspirador de Sujeiras
522
+ kernel_clean = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (3, 3))
523
+ edges = cv2.morphologyEx(edges, cv2.MORPH_OPEN, kernel_clean, iterations=1)
524
 
525
  contours, _ = cv2.findContours(edges, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)
526
  filtered = np.zeros_like(edges)
527
+
528
+ min_area = getattr(cfg, 'lineart_min_area', 40.0)
529
+
530
  for cnt in contours:
531
  perimeter = cv2.arcLength(cnt, False)
532
  area = cv2.contourArea(cnt)
533
 
534
  # BARREIRA EXTREMA: Elimina pontos isolados e traços curtos
535
+ if perimeter < cfg.lineart_min_perimeter or area < min_area:
536
  continue
537
 
538
  cv2.drawContours(filtered, [cnt], -1, 255, cfg.interior_line_thickness)