from controlnet_aux import OpenposeDetector from PIL import Image import torch def generate_openpose( input_image_path: str, output_image_path: str = None, device: str = "cuda" if torch.cuda.is_available() else "cpu", show_result: bool = False ) -> Image.Image: """ Генерирует OpenPose карту позы из входного изображения. Параметры: input_image_path (str): Путь к исходному изображению output_image_path (str, optional): Путь для сохранения результата. Если None - не сохраняется. device (str): Устройство для обработки ('cuda' или 'cpu') show_result (bool): Показывать ли результат сразу Возвращает: Image.Image: Изображение с OpenPose картой позы """ openpose = OpenposeDetector.from_pretrained("lllyasviel/ControlNet").to(device) image = Image.open(input_image_path).convert("RGB") openpose_map = openpose(image) if output_image_path: openpose_map.save(output_image_path) if show_result: openpose_map.show() return image