【问题标题】:How to save a greyscale matplotlib plot to numpy array如何将灰度 matplotlib 图保存到 numpy 数组
【发布时间】:2017-09-07 20:54:47
【问题描述】:

例如,我使用 matplotlib 绘制一个图形如下:

plt.figure(figsize=(10,10))
plt.imshow(output_fig, zorder=0,cmap="gray")
plt.scatter(x,y,color='k')

如果我使用:

plt.savefig(figname,fotmat=figtype)

我会将它保存为图形文件。但是,我想将它保存到矩阵或 numpy 数组中,以便每个元素保存图形每个像素的比例值。 我怎样才能做到这一点? 我找到了保存 RGB 值的解决方案。但我希望保存一个灰度图。 谢谢大家帮助我!

【问题讨论】:

标签: python arrays numpy matplotlib


【解决方案1】:

一旦你有一个绘制的数据(下面的自包含示例):

import numpy as np
import matplotlib.pyplot as plt
from skimage import data, color

img = data.camera()

x = np.random.rand(100) * img.shape[1]
y = np.random.rand(100) * img.shape[0]

fig = plt.figure(figsize=(10,10))
plt.imshow(img,cmap="gray")
plt.scatter(x, y, color='k')
plt.ylim([img.shape[0], 0])
plt.xlim([0, img.shape[1]])

可以使用fig.canvas(matplotlib 的画布)将底层数据恢复为数组。首先触发它的绘图:

fig.canvas.draw()

以数组形式获取数据:

width, height = fig.get_size_inches() * fig.get_dpi()
mplimage = np.fromstring(fig.canvas.tostring_rgb(), dtype='uint8').reshape(height, width, 3)

如果您希望数组的形状与原始图像相同,则必须使用 plt.figure()figsizedpi 属性。

最后,matplotlib 返回一个 RGB 图像,如果你想要灰度:

gray_image = color.rgb2gray(mplimage)

【讨论】:

    猜你喜欢
    • 2011-12-10
    • 2011-08-26
    • 1970-01-01
    • 2016-12-30
    • 1970-01-01
    • 1970-01-01
    • 2020-12-01
    • 1970-01-01
    • 2021-06-01
    相关资源
    最近更新 更多