Source code for datumaro.plugins.tiling.util
# Copyright (C) 2023 Intel Corporation
#
# SPDX-License-Identifier: MIT
from datumaro.components.media import BboxIntCoords
[docs]
def x1y1x2y2_to_cxcywh(x1: int, y1: int, x2: int, y2: int) -> BboxIntCoords:
assert x1 <= x2
assert y1 <= y2
c_x = int((x1 + x2) * 0.5)
c_y = int((y1 + y2) * 0.5)
w = x2 - x1
h = y2 - y1
return c_x, c_y, w, h
[docs]
def cxcywh_to_x1y1x2y2(c_x: int, c_y: int, w: int, h: int) -> BboxIntCoords:
half_w = int(w * 0.5)
half_h = int(h * 0.5)
x1 = c_x - half_w
y1 = c_y - half_h
x2 = c_x + (w - half_w)
y2 = c_y + (h - half_h)
return x1, y1, x2, y2
[docs]
def clip_x1y1x2y2(
x1: int, y1: int, x2: int, y2: int, max_x: int, max_y: int, min_x: int = 0, min_y: int = 0
) -> BboxIntCoords:
assert x1 <= x2
assert y1 <= y2
x1 = max(min_x, x1)
y1 = max(min_y, y1)
x2 = min(x2, max_x)
y2 = min(y2, max_y)
return x1, y1, x2, y2
[docs]
def x1y1x2y2_to_xywh(x1: int, y1: int, x2: int, y2: int) -> BboxIntCoords:
return x1, y1, x2 - x1, y2 - y1
[docs]
def xywh_to_x1y1x2y2(x: int, y: int, w: int, h: int) -> BboxIntCoords:
return x, y, x + w, y + h