mirror of
https://github.com/brycedrennan/imaginAIry
synced 2024-11-17 09:25:47 +00:00
70 lines
2.5 KiB
Python
70 lines
2.5 KiB
Python
|
import itertools
|
||
|
import random
|
||
|
|
||
|
from imaginairy.roi_utils import (
|
||
|
RoiNotInBoundsError,
|
||
|
resize_roi_coordinates,
|
||
|
square_roi_coordinate,
|
||
|
)
|
||
|
|
||
|
|
||
|
def test_square_roi_coordinate():
|
||
|
img_sizes = (10, 100, 200, 511, 513, 1024)
|
||
|
# iterate through all permutations of image sizes using itertools.product
|
||
|
for img_width, img_height in itertools.product(img_sizes, img_sizes):
|
||
|
# randomly generate a region of interest
|
||
|
for _ in range(100):
|
||
|
x1 = random.randint(0, img_width)
|
||
|
y1 = random.randint(0, img_height)
|
||
|
x2 = random.randint(x1, img_width)
|
||
|
y2 = random.randint(y1, img_height)
|
||
|
roi = x1, y1, x2, y2
|
||
|
try:
|
||
|
x1, y1, x2, y2 = square_roi_coordinate(roi, img_width, img_height)
|
||
|
except RoiNotInBoundsError:
|
||
|
continue
|
||
|
assert (
|
||
|
x2 - x1 == y2 - y1
|
||
|
), f"ROI is not square: img_width: {img_width}, img_height: {img_height}, roi: {roi}"
|
||
|
|
||
|
|
||
|
# resize_roi_coordinates
|
||
|
|
||
|
|
||
|
def test_square_resize_roi_coordinates():
|
||
|
img_sizes = (10, 100, 200, 403, 511, 513, 604, 1024)
|
||
|
# iterate through all permutations of image sizes using itertools.product
|
||
|
img_sizes = list(itertools.product(img_sizes, img_sizes))
|
||
|
|
||
|
for img_width, img_height in img_sizes:
|
||
|
# randomly generate a region of interest
|
||
|
rois = []
|
||
|
for _ in range(100):
|
||
|
x1 = random.randint(0 + 1, img_width - 1)
|
||
|
y1 = random.randint(0 + 1, img_height - 1)
|
||
|
x2 = random.randint(x1 + 1, img_width)
|
||
|
y2 = random.randint(y1 + 1, img_height)
|
||
|
roi = x1, y1, x2, y2
|
||
|
rois.append(roi)
|
||
|
rois.append((392, 85, 695, 389))
|
||
|
for roi in rois:
|
||
|
try:
|
||
|
squared_roi = square_roi_coordinate(roi, img_width, img_height)
|
||
|
except RoiNotInBoundsError:
|
||
|
continue
|
||
|
for n in range(10):
|
||
|
factor = 1.25 + 0.3 * n
|
||
|
x1, y1, x2, y2 = resize_roi_coordinates(
|
||
|
squared_roi, factor, img_width, img_height
|
||
|
)
|
||
|
assert (
|
||
|
x2 - x1 == y2 - y1
|
||
|
), f"ROI is not square: img_width: {img_width}, img_height: {img_height}, roi: {roi}"
|
||
|
|
||
|
x1, y1, x2, y2 = resize_roi_coordinates(
|
||
|
squared_roi, factor, img_width, img_height, expand_up=False
|
||
|
)
|
||
|
assert (
|
||
|
x2 - x1 == y2 - y1
|
||
|
), f"ROI is not square: img_width: {img_width}, img_height: {img_height}, roi: {roi}"
|