我已经到处寻找了,但是我还没有找到一个解决方案,所以我在这里问一下。我有一个脚本,它创建了一个坐标点的大型numpy数组(~10^8个点),然后我想使用坐标绘制一条多边形线。PIL的ImageDraw.line对于常规列表工作得很好,但是当使用numpy数组时似乎有一个问题。
现在我的解决方案是
image = Image.new('RGB', (2**12, 2**12), 'black')
draw = ImageDraw.Draw(image, 'RGB')
draw.line(pos.tolist(), fill = '#00ff00')
其中pos
是包含所有点的大型numpy数组,顺序如下:[x0, y0, x1, y1, ...]
(如果需要,可以更改)。程序中最耗时的部分是pos.tolist()
部分,约占运行时间的75%。
有没有办法画一条线,然后保存到一个图像中,并将其保存为一个numpy数组?我只想要一个简单的图像,除了线和黑色背景之外没有其他东西。
1条答案
按热度按时间ylamdve61#
列表强制转换可以替换为float32强制转换,如下所示
通常,如果在形成点数组时,为点数组本身以及与之交互的所有数组显式指定
np.float32
类型,则可以摆脱强制转换,例如应该没问题。