2017-04-12 60 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