Skip to content

Geometry:LocalToGlobal

지역 ROI 좌표를 전역 ROI 좌표로 변환하는 예제.

Python example

# -*- coding: utf-8 -*-

from typing import Tuple, TypeAlias

_X1: TypeAlias = float
_Y1: TypeAlias = float
_X2: TypeAlias = float
_Y2: TypeAlias = float

Rect: TypeAlias = Tuple[_X1, _Y1, _X2, _Y2]


def local_to_global(
    local_object_roi: Rect,
    local_screen_roi: Rect,
    global_screen_roi: Rect,
) -> Rect:
    local_x1, local_y1, local_x2, local_y2 = local_object_roi
    local_sx1, local_sy1, local_sx2, local_sy2 = local_screen_roi
    global_sx1, global_sy1, global_sx2, global_sy2 = global_screen_roi

    local_width = local_sx2 - local_sx1
    local_height = local_sy2 - local_sy1
    global_width = global_sx2 - global_sx1
    global_height = global_sy2 - global_sy1

    scale_x = global_width / local_width
    scale_y = global_height / local_height

    global_x1 = global_sx1 + (local_x1 - local_sx1) * scale_x
    global_y1 = global_sy1 + (local_y1 - local_sy1) * scale_y
    global_x2 = global_sx1 + (local_x2 - local_sx1) * scale_x
    global_y2 = global_sy1 + (local_y2 - local_sy1) * scale_y

    return global_x1, global_y1, global_x2, global_y2

See also