Ich versuche, ein Fenster an seinem HWND zu erfassen, wie mein Explorer:
Dies ist die Funktion, die ich verwende:
>def capture_window(hwnd):
win32gui.ShowWindow(hwnd, win32con.SW_RESTORE)
win32gui.SetForegroundWindow(hwnd)
time.sleep(1)
window_dc = win32gui.GetWindowDC(hwnd)
dc_object = win32ui.CreateDCFromHandle(window_dc)
compatible_dc = dc_object.CreateCompatibleDC()
left, top, right, bottom = win32gui.GetClientRect(hwnd)
width = right - left
height = bottom - top
bitmap = win32ui.CreateBitmap()
bitmap.CreateCompatibleBitmap(dc_object, width, height)
compatible_dc.SelectObject(bitmap)
compatible_dc.BitBlt((0, 0), (width, height), dc_object, (0, 0), win32con.SRCCOPY)
bmpinfo = bitmap.GetInfo()
bmpstr = bitmap.GetBitmapBits(True)
img = Image.frombuffer(
"RGB", (bmpinfo["bmWidth"], bmpinfo["bmHeight"]), bmpstr, "raw", "BGRX", 0, 1
)
img = cv2.cvtColor(np.array(img), cv2.COLOR_BGR2RGB)
win32gui.DeleteObject(bitmap.GetHandle())
compatible_dc.DeleteDC()
dc_object.DeleteDC()
win32gui.ReleaseDC(hwnd, window_dc)
return img
< /code>
Die Titelleiste ist schwarz, und es gibt eine gewisse Verschiebung in seiner Position. Was verursacht dies? Ich erwarte, dass es ein gleiches Bild erfassen kann.
Wenn ich Bitblt () benutze, um einen Screenshot meines Explorers zu erfassen, ist die erfasste Titelleiste schwarz und v ⇐ Python
-
- Similar Topics
- Replies
- Views
- Last post