给我一个python 捕获指定窗口的代码
时间: 2023-05-20 13:02:28 浏览: 173
以下是一个使用 pywin32 库捕获指定窗口的 Python 代码示例:
```python
import win32gui
import win32ui
import win32con
import numpy as np
import cv2
# 获取窗口句柄
hwnd = win32gui.FindWindow(None, "窗口标题")
# 获取窗口位置和大小
left, top, right, bottom = win32gui.GetWindowRect(hwnd)
# 获取窗口设备上下文
hwndDC = win32gui.GetWindowDC(hwnd)
mfcDC = win32ui.CreateDCFromHandle(hwndDC)
saveDC = mfcDC.CreateCompatibleDC()
# 创建位图对象
width = right - left
height = bottom - top
bitmap = win32ui.CreateBitmap()
bitmap.CreateCompatibleBitmap(mfcDC, width, height)
# 将位图选入设备上下文
saveDC.SelectObject(bitmap)
# 将窗口内容复制到位图中
result = windll.user32.PrintWindow(hwnd, saveDC.GetSafeHdc(), 0)
# 将位图转换为 OpenCV 图像
bmpinfo = bitmap.GetInfo()
bmpstr = bitmap.GetBitmapBits(True)
img = np.fromstring(bmpstr, dtype='uint8')
img.shape = (bmpinfo['bmHeight'], bmpinfo['bmWidth'], 4)
img = cv2.cvtColor(img, cv2.COLOR_BGRA2BGR)
# 释放资源
win32gui.DeleteObject(bitmap.GetHandle())
saveDC.DeleteDC()
mfcDC.DeleteDC()
win32gui.ReleaseDC(hwnd, hwndDC)
# 显示图像
cv2.imshow("Window Capture", img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
请注意,这段代码只能在 Windows 平台上运行,并且需要安装 pywin32 和 OpenCV 库。