def get_boxes(warp_sudoku_board):
	"""
	Splits image into 81 small boxes.

	:param warp_sudoku_board:
		OpenCV image
	:return:
		9x9 2D list; each cell contains 2D numpy array
	"""
	temp = [None for i in range(9)]
	boxes = [temp.copy() for i in range(9)]

	board_height = warp_sudoku_board.shape[0]
	board_width = warp_sudoku_board.shape[1]

	for y in range(9):
		for x in range(9):
			x1 = x * board_width // 9
			x2 = (x + 1) * board_width // 9
			y1 = y * board_height // 9
			y2 = (y + 1) * board_height // 9
			boxes[y][x] = warp_sudoku_board[y1:y2, x1:x2]

	return boxes