python:将多边形转换为掩码数组

python:将多边形转换为掩码数组,python,numpy,scipy,python-imaging-library,point-in-polygon,Python,Numpy,Scipy,Python Imaging Library,Point In Polygon,我有一个多边形,我想把它变成一个遮罩阵列,这样所有落在多边形内部/外部的点都是真/假。我以为我找到了完美的解决方案(),但由于某种原因,这不起作用 我做错了什么 #!/usr/bin/env python3 import numpy as np import scipy as sp from PIL import Image, ImageDraw nx, ny = 10, 10 poly = np.array([(1, 1), (6, 2), (9, 9), (3, 7)]) img =

我有一个多边形,我想把它变成一个遮罩阵列,这样所有落在多边形内部/外部的点都是真/假。我以为我找到了完美的解决方案(),但由于某种原因,这不起作用

我做错了什么

#!/usr/bin/env python3

import numpy as np
import scipy as sp
from PIL import Image, ImageDraw

nx, ny = 10, 10

poly = np.array([(1, 1), (6, 2), (9, 9), (3, 7)])

img = Image.new("L", [nx, ny], 0)
ImageDraw.Draw(img).polygon(poly, outline=1, fill=1)
mask = np.array(img)

print(mask)
# [[1 0 0 0 0 0 0 0 0 0]
#  [0 0 0 0 0 0 0 0 0 0]
#  [0 0 0 0 0 0 0 0 0 0]
#  [0 0 0 0 0 0 0 0 0 0]
#  [0 0 0 0 0 0 0 0 0 0]
#  [0 0 0 0 0 0 0 0 0 0]
#  [0 0 0 0 0 0 0 0 0 0]
#  [0 0 0 0 0 0 0 0 0 0]
#  [0 0 0 0 0 0 0 0 0 0]
#  [0 0 0 0 0 0 0 0 0 0]]

更广泛的背景:
我正在处理矩形网格上任意形状的特征。我有网格上所有边界点的索引,我想要围绕这个特征的凸包的索引
scipy.spatial.ConvexHull(边界点)
给出了凸面外壳的边缘点,我现在想把这个外壳多边形变成掩码。

poly
必须是元组列表或展开列表。由于某些原因,numpy数组处理得很糟糕。您可以使用
poly.ravel().tolist()
list(map(tuple,poly))

转换numpy数组中的多边形。我的多边形数是浮点型的。我该怎么办?