"""OpenPose body or body+hand+face preprocessing.""" from __future__ import annotations from PIL import Image class OpenPosePreprocessor: """Lazily loads the fixed OpenPose annotator from the local cache.""" def __init__(self) -> None: self._detector: object | None = None def __call__(self, image: Image.Image, *, full: bool) -> Image.Image: if self._detector is None: from controlnet_aux import OpenposeDetector self._detector = OpenposeDetector.from_pretrained( "lllyasviel/Annotators", local_files_only=True ) result = self._detector( # type: ignore[operator] image, include_body=True, include_hand=full, include_face=full, ) return result.convert("RGB")