首页 > 解决方案 > 如何将matplotlib绘图数据作为numpy数组

问题描述

我将图绘制为:

plt.imshow(image, cmap='gray', interpolation='none')
plt.imshow(masked_contour, cmap='cool', interpolation='none', alpha=0.7)
plt.show()

该图以灰度显示,内部带有蓝色轮廓。

现在我想把这个数字作为一个numpy数组(也不是一个掩码数组)。一种方法是,将绘图保存为图像,然后从那里读取。有没有更好的方法?

标签: pythonnumpymatplotlib

解决方案


fig = plt.figure(figsize=(20, 20)) # this is imp for sizing
# plot
plt.imshow(image, cmap='gray', interpolation='none')
plt.imshow(masked_contour, cmap='cool', interpolation='none', alpha=0.7)
# get image as np.array
canvas = plt.gca().figure.canvas
canvas.draw()
data = np.frombuffer(canvas.tostring_rgb(), dtype=np.uint8)
image = data.reshape(canvas.get_width_height()[::-1] + (3,))
# (Optional) show image
plt.imshow(image)
plt.show()

推荐阅读