Использование imagegrab с bbox из getwindowrect pywin32

Я хочу использовать ImageGrab PIL для захвата определенного окна. Что делает мой код ниже, так это то, что он использует FindWindow pywin32, чтобы получить дескриптор моего желаемого окна, а затем получить его размер и местоположение с помощью GetWindowRect. Затем я использую ImageGrab с 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))

Результат кода

1
0
663
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ваши настройки DPI составляют 125%, и ваш процесс не поддерживает DPI. Позвоните в SetProcessDPIAware следующим образом

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

Другие вопросы по теме