У меня есть многоугольник, который я хочу превратить в массив маски, так что все точки, которые попадают внутрь/вне многоугольника, являются True/False. Я думал, что нашел идеальное решение (SciPy Create 2D Polygon Mask), но почему-то это не работает!python: превратить многоугольник в маску array
Что я делаю неправильно?
#!/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(boundary_points)
дает мне краевые точки выпуклой оболочки, и именно этот полигон корпуса теперь я хочу превратить в маску.
спасибо, что делает! – flotzilla
Мои числа полигонов в плавающих типах, что я должен делать? –