Files
SS-snap-Comfyui_SSsnap_pose…/scaled_diff.py
T

41 lines
1.2 KiB
Python

import numpy as np
class CalcScaledPoseDiff:
@classmethod
def INPUT_TYPES(cls):
return {
"required": {
"adjusted_pose": ("POSE_KEYPOINT", {}),
"scaled_pose": ("POSE_KEYPOINT", {}),
}
}
RETURN_TYPES = ("POSE_KEYPOINT",)
RETURN_NAMES = ("scaled_pose_diff",)
FUNCTION = "calc_diff"
CATEGORY = "Snap Processing"
def _extract_pose(self, data):
if isinstance(data, list):
data = data[0]
return np.array(data["people"][0]["pose_keypoints_2d"]).reshape(-1, 3)
def calc_diff(self, adjusted_pose, scaled_pose):
adj_pose = self._extract_pose(adjusted_pose)
scl_pose = self._extract_pose(scaled_pose)
if adj_pose.shape != scl_pose.shape:
raise ValueError("Pose shapes mismatch.")
diff = scl_pose - adj_pose
diff_list = diff.reshape(-1).tolist()
result = [{
"people": [{
"pose_keypoints_2d": diff_list,
"face_keypoints_2d": [],
"hand_left_keypoints_2d": [],
"hand_right_keypoints_2d": []
}],
"canvas_width": 0,
"canvas_height": 0
}]
return (result,)