Skip to content

OpenCV:Example:CropCenter

중심 기준으로 자르기

Python

numpy 형식 및 PIL 형식 모두 사용 가능

import numpy as np
from PIL.Image import Image
from typing import Union


def crop_center(image: Union[np.ndarray, Image]) -> Union[np.ndarray, Image]:
    if isinstance(image, np.ndarray):
        y, x, c = image.shape
        m = min(x, y)
        x1 = x // 2 - (m // 2)
        y1 = y // 2 - (m // 2)
        x2 = x1 + m
        y2 = y1 + m
        return image[y1:y2, x1:x2]
    elif isinstance(image, Image):
        x, y = image.width, image.height
        m = min(x, y)
        x1 = x // 2 - (m // 2)
        y1 = y // 2 - (m // 2)
        x2 = x1 + m
        y2 = y1 + m
        return image.crop((x1, y1, x2, y2))
    else:
        raise TypeError(f"Unsupported image type: {type(image).__name__}")

See also

Favorite site