python – 在numpy数组中绘制多边形
发布时间:2020-12-20 13:22:45 所属栏目:Python 来源:网络整理
导读:我正在尝试绘制这样的多边形: In [1]: canvas = numpy.zeros((12,12),dtype=int)In [2]: mahotas.polygon.fill_polygon( ...: [(1,1),(1,10),(10,1)],...: canvas)In [3]: canvasOut[3]: array([[0,0],[0,1,0]]) 我希望以下输出: array([[0,0]]) 为什么[(1
我正在尝试绘制这样的多边形:
In [1]: canvas = numpy.zeros((12,12),dtype=int) In [2]: mahotas.polygon.fill_polygon( ...: [(1,1),(1,10),(10,1)],...: canvas) In [3]: canvas Out[3]: array([[0,0],[0,1,0]]) 我希望以下输出: array([[0,0]]) 为什么[(10,2):( 10:10)]仍为零?是否有另一种方法可以将填充多边形绘制到数组中? 解决方法
这是一个奇怪的结果.我发现如果你颠倒了点的顺序,它会绘制出完整的数字.换一种说法:
# this is broken pts = [(1,1)] # this works pts = [(1,10)] 这是一个测试程序: import numpy import mahotas.polygon def run(n,reverse=0): canvas = numpy.zeros((n,n),dtype=int) lim = n-2 print 'n%d x %d,lim=%d reverse=%d' % (n,n,lim,reverse) pts = [(1,lim),(lim,1)] if reverse: pts.reverse() mahotas.polygon.fill_polygon(pts,canvas) return canvas for rev in (0,1): for n in range(3,14): print run(n,rev) 例子: 6 x 6,lim=4 reverse=0 [[0 0 0 0 0 0] [0 1 0 0 1 0] [0 1 1 1 1 0] [0 1 1 1 1 0] [0 1 0 0 0 0] [0 0 0 0 0 0]] 6 x 6,lim=4 reverse=1 [[0 0 0 0 0 0] [0 1 1 1 1 0] [0 1 1 1 1 0] [0 1 1 1 1 0] [0 1 1 1 1 0] [0 0 0 0 0 0]] (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |