我正在尝试从Matplotlib图形中获取一个numpy数组图像,目前的方法是先将其保存到文件中,然后再读取文件,但我感觉一定有更好的方法。这是我现在正在做的:
from matplotlib.backends.backend_agg import FigureCanvasAgg as FigureCanvas
from matplotlib.figure import Figure
fig = Figure()
canvas = FigureCanvas(fig)
ax = fig.gca()
ax.text(0.0,0.0,"Test", fontsize=45)
ax.axis('off')
canvas.print_figure("output.png")
image = plt.imread("output.png")
我尝试了这个:
image = np.fromstring( canvas.tostring_rgb(), dtype='uint8' )
我从一个例子中找到了这段代码,但是运行时出现错误,提示“FigureCanvasAgg”对象没有“renderer”属性。
width, height = fig.get_size_inches() * fig.get_dpi() img = np.fromstring(canvas.to_string_rgb(), dtype='uint8').reshape(height, width, 3)
这段代码的作用是将生成的1维数组转换为图像,并获取图像的宽度和高度。请注意,这里使用的是NumPy库中的函数和数据类型。 - MaxNoecanvas.draw()
才能使它工作吗? - Rishabh Agrahariplt.show()
来显示它,则画布将被渲染。但是在上面的示例中,如果您删除对canvas.draw
的调用,则会出现AttributeError:'FigureCanvasAgg'对象没有'renderer'
(请尝试)。 - ali_mtostring_rgb
已被弃用。这里有一个更好的解决方案,https://stackoverflow.com/a/62040123/1812732 - undefined