我想从Python中使用枕头的图像裁剪矩形区域。问题是,该矩形是不与图像边缘必要平行,所以我不能使用.crop((左,上,右,下))函数。
有没有办法用枕头来实现这一目标? (假设我们知道所有4个矩形的坐标)。如果没有,怎么可以使用不同的Python库做了什么?
下面是基于scikit图像(不枕),你可能会发现有用的解决方案。
你可以通过想要剪裁到函数skimage.draw.polygon
,然后使用所检索的像素坐标来掩盖原始图像(例如,通过alpha通道)的区域的顶点。
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)