File size: 1,286 Bytes
9b63413 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
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
|