如何使用wxpython

时间:2019-10-24 10:26:44

标签: python opencv wxpython

我正在设置一个图像处理工具,其输入应为屏幕截图。

wx python屏幕截图功能在尺寸正确但图像被缩放的情况下起作用,因此不能捕获整个屏幕。

def taking_screenshot():
    screen = wx.ScreenDC()
    size=screen.GetSize()
    bmp = wx.Bitmap(size[0],size[1])
    mem=wx.MemoryDC(bmp)
    mem.Blit(0,0,size[0],size[1],screen,0,0)
    del mem
    bmp.SaveFile('screenshot_for_working.PNG',wx.BITMAP_TYPE_PNG)
   ('window',cv2.imread('screenshot_for_working.PNG') )

打开的图像窗口覆盖了整个屏幕,实际图像被缩放,因此仅部分显示屏幕

2 个答案:

答案 0 :(得分:0)

这里有一些小的调整应该可以解决。使用widthheight之类的措辞,以便您可以跟踪哪些值在哪里。

print (width, height),您可以将其与DisplaySize进行比较,如果不正确,则应自己定义宽度/高度。

def taking_screenshot():
    screen = wx.ScreenDC()
    size=screen.GetSize()

    print (wx.DisplaySize())                # debugging: see if pixel values are okay.

    width = size[0]
    height = size[1]

    print (width, height)                    # compare with above values.

    bmp = wx.EmptyBitmap(width,height)       # use EmptyBitmap here instead of wx.Bitmap.
    mem=wx.MemoryDC(bmp)
    mem.SelectObject(bmp)                   # tell mem to use the actual bitmap
    mem.Blit(0,0,width, height,screen,0,0)
    del mem
    bmp.SaveFile('screenshot_for_working.PNG',wx.BITMAP_TYPE_PNG)
   ('window', cv2.imread('screenshot_for_working.PNG') )

您还可以在此处进行检查:https://github.com/ponty/pyscreenshot中是否有其他工具可以“截屏”。

答案 1 :(得分:0)

非常感谢您的想法。我想到了。在我的基本屏幕设置中,所有放大的内容都设置为150%。还是谢谢。