Image 如何在不保存的情况下直接将wxpython图像转换为pyplot图像
我试图在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 这是我想要的,基本上不是保存文件,而是显示它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
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倍。你说的对,我应该写一个更好的原始问题。两个答案都非常有帮助,因为我试图学习更多关于图像处理的知识:所以,如果这回答了你的问题,你可能会接受我的答案。