Initial commit: Add prototype code.
This commit is contained in:
@@ -0,0 +1,6 @@
|
||||
__pycache__
|
||||
*.pyc
|
||||
*.pyo
|
||||
*.pyd
|
||||
*.pyw
|
||||
*.pyz
|
||||
+76
@@ -0,0 +1,76 @@
|
||||
import torch
|
||||
import numpy as np
|
||||
|
||||
class MaskSizeDetector:
|
||||
"""
|
||||
Ein ComfyUI Node, der die Größe einer Maske relativ zum Gesamtbild analysiert
|
||||
und bei Unterschreiten eines Schwellenwerts einen alternativen Workflow-Pfad auslöst.
|
||||
"""
|
||||
|
||||
@classmethod
|
||||
def INPUT_TYPES(cls):
|
||||
return {
|
||||
"required": {
|
||||
"mask": ("MASK",),
|
||||
"threshold_percent": ("FLOAT", {
|
||||
"default": 10.0,
|
||||
"min": 0.0,
|
||||
"max": 100.0,
|
||||
"step": 0.1
|
||||
}),
|
||||
}
|
||||
}
|
||||
|
||||
RETURN_TYPES = ("BOOLEAN", "FLOAT", "MASK")
|
||||
RETURN_NAMES = ("is_below_threshold", "mask_size_percent", "mask")
|
||||
FUNCTION = "check_mask_size"
|
||||
CATEGORY = "mask_operations"
|
||||
|
||||
def check_mask_size(self, mask, threshold_percent):
|
||||
"""
|
||||
Überprüft die Größe der Maske relativ zum Gesamtbild.
|
||||
|
||||
Args:
|
||||
mask: Eingangsmaske
|
||||
threshold_percent: Schwellenwert in Prozent (0.0 - 100.0)
|
||||
|
||||
Returns:
|
||||
is_below_threshold: Boolean, der angibt, ob die Maske kleiner als der Schwellenwert ist
|
||||
mask_size_percent: Größe der Maske in Prozent relativ zum Gesamtbild
|
||||
mask: Die ursprüngliche Maske (wird unverändert weitergegeben)
|
||||
"""
|
||||
# Maske in ein NumPy-Array konvertieren, falls sie als Tensor vorliegt
|
||||
if isinstance(mask, torch.Tensor):
|
||||
mask_array = mask.cpu().numpy()
|
||||
else:
|
||||
mask_array = np.array(mask)
|
||||
|
||||
# Anzahl der Pixel in der Maske zählen (Werte > 0 gelten als Teil der Maske)
|
||||
mask_pixels = np.sum(mask_array > 0)
|
||||
|
||||
# Gesamtgröße des Bildes berechnen
|
||||
total_pixels = mask_array.size
|
||||
|
||||
# Prozentsatz der Maske berechnen
|
||||
if total_pixels > 0:
|
||||
mask_size_percent = (mask_pixels / total_pixels) * 100.0
|
||||
else:
|
||||
mask_size_percent = 0.0
|
||||
|
||||
# Überprüfen, ob die Maske kleiner als der Schwellenwert ist
|
||||
is_below_threshold = mask_size_percent < threshold_percent
|
||||
|
||||
# Debugging-Ausgabe
|
||||
print(f"Maskengröße: {mask_size_percent:.2f}% (Schwellenwert: {threshold_percent:.2f}%)")
|
||||
print(f"Unter Schwellenwert: {is_below_threshold}")
|
||||
|
||||
return (is_below_threshold, mask_size_percent, mask)
|
||||
|
||||
# Node in ComfyUI registrieren
|
||||
NODE_CLASS_MAPPINGS = {
|
||||
"MaskSizeDetector": MaskSizeDetector
|
||||
}
|
||||
|
||||
NODE_DISPLAY_NAME_MAPPINGS = {
|
||||
"MaskSizeDetector": "Mask Size Detector"
|
||||
}
|
||||
Reference in New Issue
Block a user