Используя следующий код, я делю образец изображения на квадраты с объявленной стороной и перетасовываю их позже.Кажется, что гораздо более трудная задача состоит в том, чтобы разделить прямоугольное изображение на четыре треугольника, используя диагонали и их случайную замену, верхний с нижним и правый с левым.
Я хотел бы попробоватьэто только с PIL, Numpy и Matplotlib.Любые идеи для простейшего решения приветствуются.
from IPython.display import display
from PIL import Image
import random
imageOriginal = Image.open("lenargb.jpg")
width, height = imageOriginal.size
if(width > height):
size = height
else:
size = width
try:
ind = int(input('Number of squares aside: '))
except ValueError:
print('Bad input!')
sys.exit(1)
scale = size / ind
size = scale * ind
box = (0, 0, size, size)
cropped = imageOriginal.crop(box)
imageMove = imageOriginal.crop(box)
imageColor = imageMove
imageRotation = imageMove
tabMove = []
tabColor = []
tabRotation = []
px = 0
py = 0
numSquares = ind * ind
for x in range(numSquares):
tabMove.append(cropped.crop((px, py, px+scale, py+scale)))
tabColor.append(cropped.crop((px, py, px+scale, py+scale)))
tabRotation.append(cropped.crop((px, py, px+scale, py+scale)))
px = scale + px
if(px == size):
px = 0
py = py + scale
random.shuffle(tabMove)
px=0
py=0
for x in range(numSquares):
imageMove.paste(tabMove[x], (int(px), int(py), int(px+scale), int(py+scale)))
px = scale + px
if(px == size):
px = 0
py = py + scale
display(imageMove)