一旦你有一個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)
如果你希望你的陣列是相同的形狀與原始圖像,你將有與figsize
和dpi
性能發揮plt.figure()
。
最後,如果你想它的灰度matplotlib返回一個RGB圖像,:
gray_image = color.rgb2gray(mplimage)
的[有沒有辦法來pyplot.imshow()對象轉換爲numpy的陣列?(HTTP可能重複:// stackoverflow.com/questions/14869321/is-there-a-way-to-convert-pyplot-imshow-object-to-numpy-array) – umutto
@umutto不完全相同。我期待着一個灰度圖的解決方案,而不是RGB圖。不管怎樣,謝謝你。 – pfc