|
|
|
|
|
from os.path import abspath, exists, join, relpath |
|
|
|
|
|
import cv2 |
|
|
import numpy as np |
|
|
import utool as ut |
|
|
|
|
|
|
|
|
def test_tile_grid(): |
|
|
from scoutbot.tile import TILE_WIDTH, tile_grid |
|
|
|
|
|
img_filepath = abspath(join('examples', '1be4d40a-6fd0-42ce-da6c-294e45781f41.jpg')) |
|
|
assert exists(img_filepath) |
|
|
img = cv2.imread(img_filepath) |
|
|
|
|
|
assert img.shape == (4000, 6016, 3) |
|
|
|
|
|
grid1 = tile_grid(img.shape) |
|
|
grid2 = tile_grid(img.shape, offset=TILE_WIDTH // 2, borders=False) |
|
|
grid = grid1 + grid2 |
|
|
|
|
|
assert len(grid1) == 682 |
|
|
assert len(grid2) == 570 |
|
|
assert len(set(map(str, grid))) == len(grid) |
|
|
|
|
|
assert grid1[0] == {'x': 0, 'y': 0, 'w': 256, 'h': 256, 'b': True} |
|
|
assert grid2[0] == {'x': 128, 'y': 176, 'w': 256, 'h': 256, 'b': False} |
|
|
|
|
|
|
|
|
def test_tile_filepath(): |
|
|
from scoutbot.tile import tile_filepath |
|
|
|
|
|
img_filepath = abspath(join('examples', '1be4d40a-6fd0-42ce-da6c-294e45781f41.jpg')) |
|
|
assert exists(img_filepath) |
|
|
|
|
|
grid = {'x': 0, 'y': 0, 'w': 256, 'h': 256, 'b': True} |
|
|
|
|
|
filepath = tile_filepath(img_filepath, grid) |
|
|
filepath = relpath(filepath) |
|
|
assert filepath == join( |
|
|
'examples', '1be4d40a-6fd0-42ce-da6c-294e45781f41_x_0_y_0_w_256_h_256.jpg' |
|
|
) |
|
|
|
|
|
if exists(filepath): |
|
|
ut.delete(filepath, verbose=False) |
|
|
|
|
|
|
|
|
def test_tile_write(): |
|
|
from scoutbot.tile import tile_filepath, tile_write |
|
|
|
|
|
img_filepath = abspath(join('examples', '1be4d40a-6fd0-42ce-da6c-294e45781f41.jpg')) |
|
|
assert exists(img_filepath) |
|
|
img = cv2.imread(img_filepath) |
|
|
|
|
|
grid = {'x': 0, 'y': 0, 'w': 256, 'h': 256, 'b': True} |
|
|
filepath = tile_filepath(img_filepath, grid, ext='.png') |
|
|
assert tile_write(img, grid, filepath) |
|
|
|
|
|
assert exists(filepath) |
|
|
tile_img = cv2.imread(filepath) |
|
|
|
|
|
x0 = grid.get('x') |
|
|
y0 = grid.get('y') |
|
|
w = grid.get('w') |
|
|
h = grid.get('h') |
|
|
y1 = y0 + h |
|
|
x1 = x0 + w |
|
|
tile = img[y0:y1, x0:x1] |
|
|
|
|
|
assert tile_img.shape == (256, 256, 3) |
|
|
assert tile.shape == (256, 256, 3) |
|
|
|
|
|
tile = tile.astype(np.float32) |
|
|
tile_img = tile_img.astype(np.float32) |
|
|
|
|
|
assert np.all(np.abs(tile - tile_img) <= 0) |
|
|
ut.delete(filepath, verbose=False) |
|
|
|
|
|
|
|
|
def test_tile_compute(): |
|
|
from scoutbot.tile import compute |
|
|
|
|
|
img_filepath = abspath(join('examples', '1be4d40a-6fd0-42ce-da6c-294e45781f41.jpg')) |
|
|
shape, grids, filepaths = compute(img_filepath) |
|
|
|
|
|
assert len(filepaths) == 1252 |
|
|
for filepath in filepaths: |
|
|
assert exists(filepath) |
|
|
ut.delete(filepath, verbose=False) |
|
|
|