Деление параллелограмма на четыре треугольника по диагонали - PullRequest
0 голосов
/ 29 декабря 2018

Используя следующий код, я делю образец изображения на квадраты с объявленной стороной и перетасовываю их позже.Кажется, что гораздо более трудная задача состоит в том, чтобы разделить прямоугольное изображение на четыре треугольника, используя диагонали и их случайную замену, верхний с нижним и правый с левым.

Я хотел бы попробоватьэто только с 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)
...