猿问

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

形状多边形的形状可以通过使用轻松转换为点数组

x,y = polygon.exterior.xy

但是,这仅返回实际点。

如何将形状多边形转换为数组,其中形状外部的每个像素为 0,形状内部的每个像素为 1?

因此,举例来说,宽度=100、高度=100 的多边形应生成 (100,100) 数组。

我可以通过获取外部点,然后循环遍历每个像素并查看它是在形状内部/形状上还是外部来做到这一点。但我认为应该有更简单的方法?


翻阅古今
浏览 92回答 2
2回答

天涯尽头无女友

我不知道你的具体要求,但最快获得一般结果应该是这样的: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 )

FFIVE

这可以回答我的问题,但我想知道是否有更快的方法。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)
随时随地看视频慕课网APP

相关分类

Python
我要回答