Update controlnet_module.py
Browse files- controlnet_module.py +18 -9
controlnet_module.py
CHANGED
|
@@ -305,11 +305,22 @@ class ControlNetProcessor:
|
|
| 305 |
print(f"working_mask shape: {working_mask.shape}")
|
| 306 |
|
| 307 |
|
| 308 |
-
#
|
| 309 |
-
|
| 310 |
-
|
| 311 |
-
|
| 312 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 313 |
|
| 314 |
# MORPH_CLOSE auf dem schwarzen Hintergrund (feine Löcher)- kleiner Kernel filigrane Heranarbeitung an Person,
|
| 315 |
# es werden aber auch nur kleine Löcher in Umgebung von weiß nach schwarz geändert!
|
|
@@ -344,12 +355,10 @@ class ControlNetProcessor:
|
|
| 344 |
print(f" ✅ Konturenfilter - Größte Kontur behalten, {len(contours)-1} kleine entfernt")
|
| 345 |
|
| 346 |
|
| 347 |
-
|
| 348 |
-
#weichen/grauen Pixeln könnte Inpaint etwas anderes generieren. Die folgende
|
| 349 |
-
#Blur-Maske für Composition und UI-Anzeige
|
| 350 |
inpaint_binary_mask = working_mask.copy()
|
| 351 |
#Invertieren da SAM segmentierte Person/Gegenstand weiß ausgibt
|
| 352 |
-
inpaint_binary_mask = 255 -
|
| 353 |
|
| 354 |
|
| 355 |
# Gaussian-BLUR für weiche Kanten für Composition
|
|
|
|
| 305 |
print(f"working_mask shape: {working_mask.shape}")
|
| 306 |
|
| 307 |
|
| 308 |
+
# === 1. FÜR INPAINT: Kleinere Dilatation (5×5) ===
|
| 309 |
+
#Inpaint darf auch nur eine schwarz/weiß Maske (Binärmaske 0,255) bekommen. Bei
|
| 310 |
+
#weichen/grauen Pixeln könnte Inpaint etwas anderes generieren. Inpaint darf auch nur kleinere
|
| 311 |
+
#Segmentvergrößerung erhalten während Compositing größeren Dilate - also mehr weiße Pixel um Person benötigt
|
| 312 |
+
inpaint_mask = working_mask.copy() # Person=weiß
|
| 313 |
+
|
| 314 |
+
kernel_inpaint = np.ones((5, 5), np.uint8)
|
| 315 |
+
inpaint_mask = cv2.dilate(inpaint_mask, kernel_inpaint, iterations=1)
|
| 316 |
+
print(f" ✅ Inpaint Dilate (5x5) - Person leicht erweitert")
|
| 317 |
+
# Später invertieren für Inpaint
|
| 318 |
+
|
| 319 |
+
# === 2. FÜR COMPOSITING: Größere Dilatation (15×15) auf working_mask ===
|
| 320 |
+
kernel_comp = np.ones((15, 15), np.uint8)
|
| 321 |
+
working_mask = cv2.dilate(working_mask, kernel_comp, iterations=1)
|
| 322 |
+
print(f" ✅ Compositing Dilate (15x15) - Person stark erweitert")
|
| 323 |
+
|
| 324 |
|
| 325 |
# MORPH_CLOSE auf dem schwarzen Hintergrund (feine Löcher)- kleiner Kernel filigrane Heranarbeitung an Person,
|
| 326 |
# es werden aber auch nur kleine Löcher in Umgebung von weiß nach schwarz geändert!
|
|
|
|
| 355 |
print(f" ✅ Konturenfilter - Größte Kontur behalten, {len(contours)-1} kleine entfernt")
|
| 356 |
|
| 357 |
|
| 358 |
+
|
|
|
|
|
|
|
| 359 |
inpaint_binary_mask = working_mask.copy()
|
| 360 |
#Invertieren da SAM segmentierte Person/Gegenstand weiß ausgibt
|
| 361 |
+
inpaint_binary_mask = 255 - inpaint_mask
|
| 362 |
|
| 363 |
|
| 364 |
# Gaussian-BLUR für weiche Kanten für Composition
|