Шаг 1, давайте наглядно покажем, как должен выглядеть мой план:
Код: Выделить всё
from PIL import Image, ImageDraw
vertices = [(44, 124),
(50, 48),
(74, 46),
(73, 123),
(44, 124)]
# draw as an outline
image = Image.new('RGB', (150, 150), 'black')
draw = ImageDraw.Draw(image)
draw.line(vertices, fill='blue', width=1)
image.save(r'outline.png')
[img]https://i.stack.imgur .com/3LDpW.png[/img]
Это здорово, и я могу подтвердить в Photoshop, что мои углы соответствуют указанным координатам. Теперь шаг 2. Давайте сделаем то же самое, используя функцию многоугольника, и нарисуем закрашенный многоугольник:
Код: Выделить всё
# draw as a filled polygon
image = Image.new('RGB', (150, 150), 'black')
draw = ImageDraw.Draw(image)
draw.polygon(vertices, fill='white', outline='blue', width=1)
image.save(r'filled.png')

Это неприемлемо. Заполненный многоугольник не должен выходить за пределы контура. Вот ожидаемый результат (макет в Photoshop):

ВОПРОС
В конце дня я хочу написать функцию, которая потребуется n вершин, чтобы нарисовать чистый многоугольник с заполненной границей, которая не выходит за пределы контура. Кроме того, по техническим причинам я не могу использовать matplotlib, что означает, что я не могу использовать Skimage.draw.polygon_perimeter, но лучше всего подойдет любой другой пакет (особенно если использовать numpy)
Подробнее здесь: https://stackoverflow.com/questions/783 ... he-outline