Вот решение, основанное на scikit-изображении (не на подушке), которое вы можете найти полезным.
Вы можете передать вершины области, которую хотите обрезать, в функцию skimage.draw.polygon
и затем использовать полученные пиксельные координаты для маскирования исходного изображения (например, через альфа-канал).
import numpy as np
from skimage import io, draw
img = io.imread('https://i.stack.imgur.com/x5Ym4.png')
vertices = np.asarray([[150, 140],
[300, 240],
[210, 420],
[90, 320],
[150, 150]])
rows, cols = draw.polygon(vertices[:, 0], vertices[:, 1])
crop = img.copy()
crop[:, :, -1] = 0
crop[rows, cols, -1] = 255
io.imshow(crop)