Spaces:
Sleeping
Sleeping
Update faceless_processing.py
Browse files- 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 |
-
|
| 519 |
-
|
| 520 |
-
|
|
|
|
| 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 <
|
| 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)
|