from __future__ import division
import math
import numpy
import unittest
from chainercv.utils import tile_images
class TestChainerCV(unittest.TestCase):
def test_tile_images(self):
B = numpy.random.randint(10, 20)
n_col = numpy.random.randint(2, 5)
H = 30
W = 40
fill = 128
pad = 0
imgs = numpy.random.uniform(255, size=(B, 3, H, W))
tile = tile_images(imgs, n_col, pad, fill=fill)
if isinstance(pad, int):
pad_y = pad
pad_x = pad
else:
pad_y, pad_x = pad
n_row = int(math.ceil(B / n_col))
self.assertTrue(n_col >= 1 and n_row >= 1)
start_y_11 = H + pad_y + pad_y // 2
start_x_11 = W + pad_x + pad_x // 2
tile_11 = tile[:,
start_y_11:start_y_11 + H,
start_x_11:start_x_11 + W]
numpy.testing.assert_equal(tile_11, imgs[(n_col - 1) + 2])