python – 在numpy数组中绘制多边形

python – 在numpy数组中绘制多边形,第1张

概述我正在尝试绘制这样的多边形: In [1]: canvas = numpy.zeros((12, 12), dtype=int)In [2]: mahotas.polygon.fill_polygon( ...: [(1, 1), (1, 10), (10, 10), (10, 1)], ...: canvas)In [3]: canvasOut[3]: array([[0 我正在尝试绘制这样的多边形:

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]])

为什么[(10,2):( 10:10)]仍为零?是否有另一种方法可以将填充多边形绘制到数组中?

解决方法 这是一个奇怪的结果.我发现如果你颠倒了点的顺序,它会绘制出完整的数字.换一种说法:

# this is brokenpts = [(1,1)]# this workspts = [(1,10)]

这是一个测试程序:

import numpyimport mahotas.polygondef 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 canvasfor 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]]
总结

以上是内存溢出为你收集整理的python – 在numpy数组中绘制多边形全部内容,希望文章能够帮你解决python – 在numpy数组中绘制多边形所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1196464.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-03
下一篇2022-06-03

发表评论

登录后才能评论

评论列表(0条)

    保存