一旦你有一个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