From 318c2e26d46a1ef72cee7bd2aa326fec09333db0 Mon Sep 17 00:00:00 2001 From: chflame163 Date: Mon, 24 Jun 2024 19:54:14 +0800 Subject: [PATCH] commit HSVValue, CheckMask nodes, and CropByMaskV2 node add round_to_multiple option --- README.MD | 18 +++++++++++++ README_CN.MD | 18 +++++++++++++ image/check_mask_node.jpg | Bin 0 -> 34796 bytes image/corp_by_mask_v2_node.jpg | Bin 80844 -> 81957 bytes image/hsv_value_node.jpg | Bin 0 -> 27047 bytes py/check_mask.py | 46 +++++++++++++++++++++++++++++++++ py/color_to_HSVvalue.py | 44 +++++++++++++++++++++++++++++++ py/crop_by_mask_v2.py | 35 +++++++++++++++---------- py/imagefunc.py | 22 ++++++++++++++++ pyproject.toml | 2 +- 10 files changed, 171 insertions(+), 14 deletions(-) create mode 100644 image/check_mask_node.jpg create mode 100644 image/hsv_value_node.jpg create mode 100644 py/check_mask.py create mode 100644 py/color_to_HSVvalue.py diff --git a/README.MD b/README.MD index 4938ab8..998e56f 100644 --- a/README.MD +++ b/README.MD @@ -80,6 +80,8 @@ When this error has occurred, please check the network environment. ## Update **If the dependency package error after updating, please reinstall the relevant dependency packages.
+* [CropByMaskV2](#CropByMaskV2) add option to round the cutting size by multiples. +* Commit [CheckMask](#CheckMask) node, it detect whether the mask contains sufficient effective areas. Commit [HSVValue](#HSVValue) node, it convert color values to HSV values. * [BooleanOperatorV2](#BooleanOperatorV2), [NumberCalculatorV2](#NumberCalculatorV2), [Integer](#Integer), [Float](#Float), [Boolean](#Boolean) nodes add string output to output the value as a string for use with [SwitchCase](#SwitchCase). * Commit [SwitchCase](#SwitchCase) node, Switches the output based on the matching string. Can be used for any type of data switching. * Commit [String](#String) node, Used to output a string. It is the TextBox simplified node. @@ -564,6 +566,7 @@ The following changes have been made based on CropByMask: ![image](image/corp_by_mask_v2_node.jpg) * The input ```mask_for_crop``` reanme to ```mask```。 * Add optional inputs to the ```crop_box```. If there are inputs here, mask detection will be ignored and this data will be directly used for cropping. +* Add the option ```round_to_multiple``` to round the trimming edge length multiple. For example, setting it to 8 will force the width and height to be multiples of 8. ### RestoreCropBox Restore the cropped image to the original image by [CropByMask](#CropByMask). @@ -768,6 +771,13 @@ Output the color value as a single R, G, B three decimal values. Supports HEX an Node Options: * color_value: Supports hexadecimal (HEX) or decimal (DEC) color values and should be of string or tuple type. Forcing in other types will result in an error. +### HSVValue +Output color values as individual decimal values of H, S, and V (maximum value of 255). Supports HEX and DEC formats for ColorPicker node output. +![image](image/hsv_value_node.jpg) + +Node Options: +* color_value: Supports hexadecimal (HEX) or decimal (DEC) color values and should be of string or tuple type. Forcing in other types will result in an error. + ### GetColorTone Obtain the main color or average color from the image and output RGB values. ![image](image/get_color_tone_example.jpg) @@ -1169,6 +1179,14 @@ Node Options: * condition: Judgment conditions. ```include``` determines whether it contains a substring, and ```exclude``` determines whether it does not. * sub_string: Substring. +### CheckMask +Check if the mask contains enough valid areas and output a Boolean value. + +Node Options: +![image](image/check_mask_node.jpg) +* white_point: The white point threshold used to determine whether the mask is valid is considered valid if it exceeds this value. +* area_percent: The percentage of effective areas. If the proportion of effective areas exceeds this value, output True. + ### If ![image](image/if_example.jpg) diff --git a/README_CN.MD b/README_CN.MD index 52de01c..f114dc8 100644 --- a/README_CN.MD +++ b/README_CN.MD @@ -80,6 +80,9 @@ git clone https://github.com/chflame163/ComfyUI_LayerStyle.git ## 更新说明 **如果本插件更新后出现依赖包错误,请重新安装相关依赖包。 +* [CropByMaskV2](#CropByMaskV2) 增加裁切尺寸按倍数取整选项。 +* 添加 [CheckMask](#CheckMask) 节点, 用于检测遮罩是否包含足够的有效区域。 +* 添加 [HSVValue](#HSVValue) 节点, 用于转换色值为HSV值。 * [BooleanOperatorV2](#BooleanOperatorV2), [NumberCalculatorV2](#NumberCalculatorV2), [Integer](#Integer), [Float](#Float), [Boolean](#Boolean)节点增加string输出,将值输出为字符串,以配合[SwitchCase](#SwitchCase)使用。 * 添加 [SwitchCase](#SwitchCase) 节点, 根据匹配字符串切换输出。可用于任意类型的数据切换。 * 添加 [String](#String) 节点, 用于输出字符串。这是TextBox简化版节点。 @@ -556,6 +559,7 @@ CropByMask的V2升级版。支持crop_box输入,方便裁切相同尺寸的图 ![image](image/corp_by_mask_v2_node.jpg) * ```mask_for_crop```更名为```mask```。 * 增加```crop_box```可选输入,如果这里有输入将忽略遮罩探测,直接使用此数据裁切。 +* 增加```round_to_multiple```选项,使裁切边长倍数取整。例如设置为8,宽和高将强制设置为8的倍数。 ### RestoreCropBox @@ -758,6 +762,12 @@ ImageScaleByAspectRatio的V2升级版 节点选项说明: * color_value: 支持十六进制(HEX)或十进制(DEC)色值,应是string或tuple类型,强行接入其他类型将导致错误。 +### HSVValue +将色值输出为单独的H, S, V三个10进制数值(最大值255)。支持ColorPicker节点输出的HEX和DEC格式。 +![image](image/hsv_value_node.jpg) + +节点选项说明: +* color_value: 支持十六进制(HEX)或十进制(DEC)色值,应是string或tuple类型,强行接入其他类型将导致错误。 ### GetColorTone 从图片中获取主颜色或平均色。 @@ -1160,6 +1170,14 @@ BooleanOperator的升级版,增加了节点内数值输入,增加了大于 * sub_string: 子字符串文本。 +### CheckMask +检测遮罩是否包含足够的有效区域, 输出布尔值。 + +节点选项说明: +![image](image/check_mask_node.jpg) +* white_point: 判断遮罩是否有效的白点值,高于此值被计入有效。 +* area_percent: 有效区域所占百分比。检测有效区域占比超过此值则输出True。 + ### If ![image](image/if_example.jpg) 根据布尔值条件输入切换输出。可用于任意类型的数据切换,包括且不限于数值、字符串、图片、遮罩、模型、latent、pipe管线等。 diff --git a/image/check_mask_node.jpg b/image/check_mask_node.jpg new file mode 100644 index 0000000000000000000000000000000000000000..368a6c0934761692a7c7851c71d4c1993c7ca767 GIT binary patch literal 34796 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 Ll`wc0qvihq$uDtp literal 0 HcmV?d00001 diff --git a/image/corp_by_mask_v2_node.jpg b/image/corp_by_mask_v2_node.jpg index bb5ba7eb18c4c75534faa630214c6622345ef493..e68209f2a4d965908d8baed7f20746ca5929a1fd 100644 GIT binary patch literal 81957 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

LqNjvs-$4*A7T0ZQ2l!)EWg{w?(K!O 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%0A`y%3e*?^ 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 J%;xcq{|iTzTZ#Yx literal 0 HcmV?d00001 diff --git a/py/check_mask.py b/py/check_mask.py new file mode 100644 index 0000000..42669fb --- /dev/null +++ b/py/check_mask.py @@ -0,0 +1,46 @@ +from .imagefunc import * + +NODE_NAME = 'CheckMask' + +# 检查mask是否有效,如果mask面积少于指定比例则判为无效mask +class CheckMask: + + def __init__(self): + pass + + @classmethod + def INPUT_TYPES(self): + blank_mask_list = ['white', 'black'] + return { + "required": { + "mask": ("MASK",), # + "white_point": ("INT", {"default": 1, "min": 1, "max": 254, "step": 1}), # 用于判断mask是否有效的白点值,高于此值被计入有效 + "area_percent": ("INT", {"default": 1, "min": 1, "max": 99, "step": 1}), # 区域百分比,低于此则mask判定无效 + }, + "optional": { # + } + } + + RETURN_TYPES = ("BOOLEAN",) + RETURN_NAMES = ('bool',) + FUNCTION = 'check_mask' + CATEGORY = '😺dzNodes/LayerUtility' + + def check_mask(self, mask, white_point, area_percent,): + + if mask.dim() == 2: + mask = torch.unsqueeze(mask, 0) + mask = tensor2pil(mask[0]) + if mask.width * mask.height > 262144: + target_width = 512 + target_height = int(target_width * mask.height / mask.width) + mask = mask.resize((target_width, target_height), Image.LANCZOS) + return (mask_white_area(mask, white_point) * 100 > area_percent,) + +NODE_CLASS_MAPPINGS = { + "LayerUtility: CheckMask": CheckMask +} + +NODE_DISPLAY_NAME_MAPPINGS = { + "LayerUtility: CheckMask": "LayerUtility: Check Mask" +} \ No newline at end of file diff --git a/py/color_to_HSVvalue.py b/py/color_to_HSVvalue.py new file mode 100644 index 0000000..c393f0d --- /dev/null +++ b/py/color_to_HSVvalue.py @@ -0,0 +1,44 @@ +from .imagefunc import * + +NODE_NAME = 'HSV Value' +any = AnyType("*") + +class ColorValuetoHSVValue: + + def __init__(self): + pass + + @classmethod + def INPUT_TYPES(self): + + return { + "required": { + "color_value": (any, {}), + }, + "optional": { + } + } + + RETURN_TYPES = ("INT", "INT", "INT") + RETURN_NAMES = ("H", "S", "V") + FUNCTION = 'color_value_to_hsv_value' + CATEGORY = '😺dzNodes/LayerUtility/Data' + + def color_value_to_hsv_value(self, color_value,): + H, S, V = 0, 0, 0 + if isinstance(color_value, str): + H, S, V = Hex_to_HSV_255level(color_value) + elif isinstance(color_value, tuple): + H, S, V = Hex_to_HSV_255level(RGB_to_Hex(color_value)) + else: + log(f"{NODE_NAME}: color_value input type must be tuple or string.", message_type="error") + + return (H, S, V,) + +NODE_CLASS_MAPPINGS = { + "LayerUtility: HSV Value": ColorValuetoHSVValue +} + +NODE_DISPLAY_NAME_MAPPINGS = { + "LayerUtility: HSV Value": "LayerUtility: HSV Value" +} \ No newline at end of file diff --git a/py/crop_by_mask_v2.py b/py/crop_by_mask_v2.py index f1986db..29c15d2 100644 --- a/py/crop_by_mask_v2.py +++ b/py/crop_by_mask_v2.py @@ -9,7 +9,8 @@ class CropByMaskV2: @classmethod def INPUT_TYPES(self): - detect_mode = ['min_bounding_rect', 'max_inscribed_rect', 'mask_area'] + detect_mode = ['mask_area', 'min_bounding_rect', 'max_inscribed_rect'] + multiple_list = ['8', '16', '32', '64', 'None'] return { "required": { "image": ("IMAGE", ), # @@ -20,6 +21,7 @@ class CropByMaskV2: "bottom_reserve": ("INT", {"default": 20, "min": -9999, "max": 9999, "step": 1}), "left_reserve": ("INT", {"default": 20, "min": -9999, "max": 9999, "step": 1}), "right_reserve": ("INT", {"default": 20, "min": -9999, "max": 9999, "step": 1}), + "round_to_multiple": (multiple_list,), }, "optional": { "crop_box": ("BOX",), @@ -33,7 +35,7 @@ class CropByMaskV2: def crop_by_mask_v2(self, image, mask, invert_mask, detect, top_reserve, bottom_reserve, - left_reserve, right_reserve, + left_reserve, right_reserve, round_to_multiple, crop_box=None ): @@ -63,24 +65,31 @@ class CropByMaskV2: width = 0 height = 0 if detect == "min_bounding_rect": - (x, y, width, height) = min_bounding_rect(bluredmask) + (x, y, w, h) = min_bounding_rect(bluredmask) elif detect == "max_inscribed_rect": - (x, y, width, height) = max_inscribed_rect(bluredmask) + (x, y, w, h) = max_inscribed_rect(bluredmask) else: - (x, y, width, height) = mask_area(_mask) + (x, y, w, h) = mask_area(_mask) - width = num_round_to_multiple(width, 8) - height = num_round_to_multiple(height, 8) - - log(f"{NODE_NAME}: Box detected. x={x},y={y},width={width},height={height}") canvas_width, canvas_height = tensor2pil(torch.unsqueeze(image[0], 0)).convert('RGB').size x1 = x - left_reserve if x - left_reserve > 0 else 0 y1 = y - top_reserve if y - top_reserve > 0 else 0 - x2 = x + width + right_reserve if x + width + right_reserve < canvas_width else canvas_width - y2 = y + height + bottom_reserve if y + height + bottom_reserve < canvas_height else canvas_height + x2 = x + w + right_reserve if x + w + right_reserve < canvas_width else canvas_width + y2 = y + h + bottom_reserve if y + h + bottom_reserve < canvas_height else canvas_height + + if round_to_multiple != 'None': + multiple = int(round_to_multiple) + width = num_round_up_to_multiple(x2 - x1, multiple) + height = num_round_up_to_multiple(y2 - y1, multiple) + x1 = x1 - (width - (x2 - x1)) // 2 + y1 = y1 - (height - (y2 - y1)) // 2 + x2 = x1 + width + y2 = y1 + height + + log(f"{NODE_NAME}: Box detected. x={x1},y={y1},width={width},height={height}") crop_box = (x1, y1, x2, y2) - preview_image = draw_rect(preview_image, x, y, width, height, line_color="#F00000", - line_width=(width + height) // 100) + preview_image = draw_rect(preview_image, x, y, w, h, line_color="#F00000", + line_width=(w + h) // 100) preview_image = draw_rect(preview_image, crop_box[0], crop_box[1], crop_box[2] - crop_box[0], crop_box[3] - crop_box[1], line_color="#00F000", diff --git a/py/imagefunc.py b/py/imagefunc.py index 0102d28..dc24e87 100644 --- a/py/imagefunc.py +++ b/py/imagefunc.py @@ -1631,6 +1631,18 @@ def gray_threshold(image:Image, thresh:int=127, otsu:bool=False) -> Image: def image_to_colormap(image:Image, index:int) -> Image: return cv22pil(cv2.applyColorMap(pil2cv2(image), index)) +# 检查mask有效区域面积比例 +def mask_white_area(mask:Image, white_point:int) -> float: + if mask.mode != 'L': + mask.convert('L') + white_pixels = 0 + for y in range(mask.height): + for x in range(mask.width): + mask.getpixel((x, y)) > 16 + if mask.getpixel((x, y)) > white_point: + white_pixels += 1 + return white_pixels / (mask.width * mask.height) + '''Color Functions''' @@ -1766,6 +1778,7 @@ def random_numbers(total:int, random_range:int, seed:int=0, sum_of_numbers:int=0 ret_list.append((sum_of_numbers - sum(ret_list)) // 2) return ret_list +# 四舍五入取整数倍 def num_round_to_multiple(number:int, multiple:int) -> int: remainder = number % multiple if remainder == 0 : @@ -1776,6 +1789,15 @@ def num_round_to_multiple(number:int, multiple:int) -> int: factor += 1 return factor * multiple +# 向上取整数倍 +def num_round_up_to_multiple(number: int, multiple: int) -> int: + remainder = number % multiple + if remainder == 0: + return number + else: + factor = (number + multiple - 1) // multiple # 向上取整的计算方式 + return factor * multiple + def calculate_side_by_ratio(orig_width:int, orig_height:int, ratio:float, longest_side:int=0) -> int: if orig_width > orig_height: diff --git a/pyproject.toml b/pyproject.toml index 0798e55..c98ab31 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,7 +1,7 @@ [project] name = "comfyui_layerstyle" description = "A set of nodes for ComfyUI it generate image like Adobe Photoshop's Layer Style. the Drop Shadow is first completed node, and follow-up work is in progress." -version = "1.0.8" +version = "1.0.9" license = "MIT" dependencies = ["numpy", "pillow", "torch", "matplotlib", "Scipy", "scikit_image", "opencv-contrib-python", "pymatting", "segment_anything", "timm", "addict", "yapf", "colour-science", "wget", "mediapipe", "loguru", "typer_config", "fastapi", "rich", "google-generativeai", "diffusers", "omegaconf", "tqdm", "transformers", "kornia", "image-reward", "ultralytics", "blend_modes", "blind-watermark", "qrcode", "pyzbar", "psd-tools"]

|ZC)nz zBy|UDSFz<^49L%h1d#JsCBb?E(hop-wLiphAO-CEUtp6U;sfNozbccE^k z5tgI#=kpfS1QU!M#u{x|DJ;jxsd8xblCaVLGKBSw>wbi72049{_lGNndG0QR)4qS< zzc(@-owEk0J7C*^{d6yXFB2kNxkvWgX=!qydt5lQ4&C=ex5gZz?081H27dm*<)HTaT z8)FBbSO7#%30tN)PU#|I#+hHhhv)`%Y$X`mO4#yPP%jP#_UKswjL{F+*M7m}`rN%% ze>EGPdLAehSS-t6HUV{l{M1Ox)i6PSzl{`|=_|+-BD8MYEcY*KBlzIai%?Wl!U7>I z?Vc{H^jV@Pca35-U4T`HYIpz@+$m9}*jh3x{cad;(2DOj5s;Ge!E=y+Ww1JYAAAboY?bsB@v+{qutOC;X+hk z0&J2(HV9l}AR9pkAA0d1yr4tv61Lovdfj$p}sXvjo62wHvv@2)9YV5mp;m$!{go{vxlz=S03FAcycwBHHUe}bcnQLH% zK)WzFjiEEn4vZyA3PoSOX4m@c5*AFNYyNSZs%$)s9rdbYJ^k_nsH*E3h60!)z!?bu z>zdt2G!IHV5rB2mZUjy`;s2XJq>ILuE+wLz5nz=huV>&C;l%5%4N4yYUr2aV^TOFS zo~G@9{?97@FRU<=O#&!yfeP}?^8dmM6Q@weLmB#Z`4xX}tIg7X8#M-HXkM6wj@ogH zBy{xNVKEy&GyL0qmo>eJ!2=m)p@i-5K)wXzgYm(;W}HQdgMrSPDZun%!YA;Dvq|Yr zgC)m95pvEo2Cm48MZUzj&H@>g9T@9t6W)jLWCpV492g7V=Ppq0E6iu;!nI8JE#AEA zfR;tj)5d@yv=I*&Lc?VA20jVEqZ8Iw4G^iEBgz<4m=b@^+wqIKP_L+MG5%k1nlC~>|NS^k`7a3lM+iL)Y~n1J!gCH@^O&Cpi<%XAVo4D!5JNoh)a*@DseO zTWggAArwekDmU@E1@yN*<%K*p$~MRkR*d^rqtmt1v1mhRf6?l1W`-r`-&n)*SG@bn z5c+?A9tDrne?Ar#MeB}(1@+RJh)5p9YmydOQr Hd-DGP4vM@E literal 80844 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