callum-canavan's picture
Add helpers, change to hot dog example
954caab
from pathlib import Path
from PIL import Image
import numpy as np
def get_jigsaw_pieces(size):
'''
Load all pieces of the 4x4 jigsaw puzzle.
size (int) :
Should be 64 or 256, indicating side length of jigsaw puzzle
'''
# Location of pieces
piece_dir = Path(__file__).parent / 'assets'
# Helper function to load pieces as np arrays
def load_pieces(path):
'''
Load a piece, from the given path, as a binary numpy array.
Return a list of the "base" piece, and all four of its rotations.
'''
piece = Image.open(path)
piece = np.array(piece)[:,:,0] // 255
pieces = np.stack([np.rot90(piece, k=-i) for i in range(4)])
return pieces
# Load pieces and rotate to get 16 pieces, and cat
pieces_corner = load_pieces(piece_dir / f'4x4/4x4_corner_{size}.png')
pieces_inner = load_pieces(piece_dir / f'4x4/4x4_inner_{size}.png')
pieces_edge1 = load_pieces(piece_dir / f'4x4/4x4_edge1_{size}.png')
pieces_edge2 = load_pieces(piece_dir / f'4x4/4x4_edge2_{size}.png')
pieces = np.concatenate([pieces_corner, pieces_inner, pieces_edge1, pieces_edge2])
return pieces