Files
westNeighbor-ComfyUI-ultima…/openpose_render_nodes.py
T
2025-01-11 02:29:13 -06:00

55 lines
2.0 KiB
Python

import json
import numpy as np
import torch
from .util import draw_pose, draw_pose_json
class OpenposeRenderNode:
@classmethod
def INPUT_TYPES(s):
return {
"optional": {
"show_body": ("BOOLEAN", {"default": True}),
"show_face": ("BOOLEAN", {"default": True}),
"show_hands": ("BOOLEAN", {"default": True}),
"resolution_x": ("INT", {
"default": -1,
"min": -1,
"max": 12800
}),
"pose_marker_size": ("INT", {
"default": 4,
"min": 0,
"max": 100
}),
"face_marker_size": ("INT", {
"default": 3,
"min": 0,
"max": 100
}),
"hand_marker_size": ("INT", {
"default": 2,
"min": 0,
"max": 100
}),
"POSE_JSON": ("STRING", {"multiline": True}),
"POSE_KEYPOINT": ("POSE_KEYPOINT",{"default": None}),
},
}
RETURN_TYPES = ("IMAGE",)
FUNCTION = "render_img"
CATEGORY = "ultimate-openpose"
def render_img(self, show_body, show_face, show_hands, resolution_x, pose_marker_size, face_marker_size, hand_marker_size, POSE_JSON, POSE_KEYPOINT=None):
if POSE_KEYPOINT is not None:
POSE_JSON = json.dumps(POSE_KEYPOINT).replace("'",'"').replace('None','[]')
elif POSE_JSON:
POSE_JSON = POSE_JSON.replace("'",'"').replace('None','[]')
pose_imgs = draw_pose_json(POSE_JSON, resolution_x, show_body, show_face, show_hands, pose_marker_size, face_marker_size, hand_marker_size)
if pose_imgs:
pose_imgs_np = np.array(pose_imgs).astype(np.float32) / 255
return (torch.from_numpy(pose_imgs_np),)
else:
raise ValueError("Invalid input type. Expected an input to give an output.")