拍摄窗口截图的最快方法

时间:2018-09-11 19:05:53

标签: python windows screenshot

def take_screenshot(hwnd):

    left, top, right, bot = win32gui.GetClientRect(hwnd)
    #left, top, right, bot = win32gui.GetWindowRect(hwnd)
    width = right - left
    height  = bot - top

    wDC = win32gui.GetWindowDC(hwnd)
    dcObj=win32ui.CreateDCFromHandle(wDC)
    cDC=dcObj.CreateCompatibleDC()
    dataBitMap = win32ui.CreateBitmap()
    dataBitMap.CreateCompatibleBitmap(dcObj, width, height)
    cDC.SelectObject(dataBitMap)
    cDC.BitBlt((0, 0), (width, height), dcObj, (0, 0), win32con.SRCCOPY)
    im = dataBitMap.GetBitmapBits(True)
    img = np.frombuffer(im, dtype='uint8')
    img.shape = (height,width,4)
    cv2.cvtColor(img, cv2.COLOR_RGB2BGR)
    dcObj.DeleteDC()
    cDC.DeleteDC()
    win32gui.ReleaseDC(hwnd, wDC)
    win32gui.DeleteObject(dataBitMap.GetHandle())
    return img[:,:,:3]

此刻我正在使用此代码。有什么方法可以使其更快=我希望能够以60 fps的实时速度捕获1080。我可以使用我的GPU来解决此问题吗?我有gtx 1070。

0 个答案:

没有答案