从pywin32的GetWindowRect中将ImageGrab与bbox一起使用

时间:2018-08-10 12:41:46

标签: python python-imaging-library pywin32

我想使用PIL的ImageGrab捕获特定的窗口。我下面的代码所做的是,它使用pywin32的FindWindow获取所需窗口的句柄,然后使用GetWindowRect获取其大小和位置。然后,我将ImageGrab与bbox一起使用,该bbox等于我从GetWindowRect获得的结果。但是,这并不能捕获整个窗口。窗口的很大一部分没有显示。我做错了什么?这是我的代码和得到的结果:

import win32gui
import cv2
from PIL import ImageGrab
import numpy as np

fceuxHWND = win32gui.FindWindow(None, 'FCEUX 2.1.4a: Super Mario Bros. (JU) 
[!]')
rect = win32gui.GetWindowRect(fceuxHWND)
screen = np.array(ImageGrab.grab(bbox=rect), dtype=np.uint8)

cv2.imshow('test',cv2.cvtColor(screen,cv2.COLOR_BGR2RGB))

Result of code

1 个答案:

答案 0 :(得分:1)

您的DPI设置为125%,并且您的过程不了解DPI。如下致电SetProcessDPIAware

import ctypes
...
ctypes.windll.user32.SetProcessDPIAware()