为了账号安全,请及时绑定邮箱和手机立即绑定

Shapley 多边形要为每个像素排列,而不仅仅是边界

Shapley 多边形要为每个像素排列,而不仅仅是边界

翻阅古今 2023-08-08 16:41:34
形状多边形的形状可以通过使用轻松转换为点数组x,y = polygon.exterior.xy但是,这仅返回实际点。如何将形状多边形转换为数组,其中形状外部的每个像素为 0,形状内部的每个像素为 1?因此,举例来说,宽度=100、高度=100 的多边形应生成 (100,100) 数组。我可以通过获取外部点,然后循环遍历每个像素并查看它是在形状内部/形状上还是外部来做到这一点。但我认为应该有更简单的方法?
查看完整描述

2 回答

?
天涯尽头无女友

TA贡献1831条经验 获得超9个赞

我不知道你的具体要求,但最快获得一般结果应该是这样的:


width = int(shape.bounds[2] - shape.bounds[0])

height = int(shape.bounds[3] - shape.bounds[1])

points = MultiPoint( [(x,y) for x in range(width) for y in range(height)] )

zeroes = points.difference( shape )

ones = points.intersection( shape )


查看完整回答
反对 回复 2023-08-08
?
FFIVE

TA贡献1797条经验 获得超6个赞

这可以回答我的问题,但我想知道是否有更快的方法。


data = []


width = int(shape.bounds[2] - shape.bounds[0])

height = int(shape.bounds[3] - shape.bounds[1])


for y in range(0,height):

    row = []

    for x in range(0,width):

        val = 1 if shape.convex_hull.contains(Point(x,y)) else 0

        row.append(val)

    data.append(row)


查看完整回答
反对 回复 2023-08-08
  • 2 回答
  • 0 关注
  • 90 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信