gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 14:07:33 26 4
gpt4 key购买 nike

我有一个多边形,我想把它变成一个掩码数组,这样落在多边形内部/外部的所有点都是 True/False。我以为我找到了完美的解决方案 ( SciPy Create 2D Polygon Mask ),但由于某些原因,这不起作用!

我做错了什么?

#!/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) 给我凸包的边缘点,我现在想把这个包多边形变成掩码。

最佳答案

poly 必须是元组列表或扁平化列表。出于某种原因,numpy 数组处理不当。您可以使用 poly.ravel().tolist()list(map(tuple, poly)) 转换 numpy 数组中的多边形。

关于python:将多边形转换为掩码数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42176846/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com