Image 如何在不保存的情况下直接将wxpython图像转换为pyplot图像

Image 如何在不保存的情况下直接将wxpython图像转换为pyplot图像,image,matplotlib,wxpython,Image,Matplotlib,Wxpython,我试图在pyplot中显示wxpython屏幕快照,但我不想保存图像。 这就是我所拥有的 导入wx 从matplotlib导入pyplot作为plt 将matplotlib.image导入为mpimg thisApp=wx。应用重定向=False def saveSnapshotdcSource:接受参数dcSource 主要基于Andrea Gavana 2006-11-08向wxpython用户发布的代码 size=dcSource.size bmp=wx.EmptyBitmapsize.w

我试图在pyplot中显示wxpython屏幕快照,但我不想保存图像。 这就是我所拥有的

导入wx 从matplotlib导入pyplot作为plt 将matplotlib.image导入为mpimg thisApp=wx。应用重定向=False def saveSnapshotdcSource:接受参数dcSource 主要基于Andrea Gavana 2006-11-08向wxpython用户发布的代码 size=dcSource.size bmp=wx.EmptyBitmapsize.width、size.height memDC=wx.MemoryDC memDC.SelectObjectbmp memDC.Blit 0,0,size.width,size.height,dcSource,0,0 memDC.SelectObjectwx.NullBitmap img=bmp.ConvertToImage img.SaveFile'saved.png',wx.BITMAP\u TYPE\u png img=mpimg.imread'saved.png' plt.imshowimg 节目 saveSnapshotwx.ScreenDC 这是我想要的,基本上不是保存文件,而是显示它

    img = bmp.ConvertToImage()
    plt.imshow(img)
    plt.show()
您可以使用BytesIO对象。一个可能的解决办法是:

导入wx 从matplotlib导入pyplot作为plt 从io导入字节io thisApp=wx.Appredirect=False def saveSnapshotdcSource: size=dcSource.size bmp=wx.EmptyBitmapsize.width、size.height memDC=wx.MemoryDC memDC.SelectObjectbmp memDC.Blit 0,0,size.width,size.height,dcSource,0,0 memDC.SelectObjectwx.NullBitmap img=bmp.ConvertToImage bio=BytesIO bs=wx.OutputStreambio img.SaveStreambs,wx.BITMAP\u TYPE\u PNG bio.seek0倒带流 plt.imshowplt.imreadbio 节目 saveSnapshotwx.ScreenDC 我为这种方法找到了一些想法

更新: 使用的方法稍有不同,如下所示:

将matplotlib.pyplot作为plt导入 将pyscreenshot导入为ImageGrab def保存快照: im=ImageGrab.grab plt.imshowim 节目
谢谢,这很有效,但它没有给我节省时间,我正在寻找它。它只快了0.003s。这个链接有一些很好的信息,我会研究它,也许会找到一种更有效的方法来捕获和显示屏幕截图。我用它制作了一个屏幕截图的视频,效果很好,但帧速率只有每秒8帧。我希望我能把它提高到15。你可以看看pyscreenshot,它可能会更快。谢谢你,太完美了。我将pyscreenshots的计时比我使用的方法快近10倍。你说的对,我应该写一个更好的原始问题。两个答案都非常有帮助,因为我试图学习更多关于图像处理的知识:所以,如果这回答了你的问题,你可能会接受我的答案。