2017-04-12 84 views
0

例如,我绘制使用matplotlib一个数字如下:如何保存灰度matplotlib阴谋numpy的阵列

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值。但我希望能保存一个灰度图。 谢谢大家的帮助!

+0

的[有没有办法来pyplot.imshow()对象转换为numpy的阵列?(HTTP可能重复:// stackoverflow.com/questions/14869321/is-there-a-way-to-convert-pyplot-imshow-object-to-numpy-array) – umutto

+0

@umutto不完全相同。我期待着一个灰度图的解决方案,而不是RGB图。不管怎样,谢谢你。 – pfc

回答

1

一旦你有一个ploted数据(自包含例如波纹管):

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) 

如果你希望你的阵列是相同的形状与原始图像,你将有与figsizedpi性能发挥plt.figure()

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

gray_image = color.rgb2gray(mplimage) 
+0

谢谢。有用。 – pfc