python cv2 通过窗口句柄截图 并保存bmp 再通过别的地方使用CV2 直接调用 图片数据
时间: 2024-03-22 08:38:11 浏览: 117
对python cv2批量灰度图片并保存的实例讲解
5星 · 资源好评率100%
可以通过以下步骤实现:
1. 导入需要的库和模块:
```python
import win32gui
import numpy as np
import cv2
```
2. 获取窗口句柄并截图:
```python
hwnd = win32gui.FindWindow(None, '窗口标题') # 窗口标题替换成你要截图的窗口标题
win32gui.SetForegroundWindow(hwnd) # 将窗口置于最前
left, top, right, bottom = win32gui.GetWindowRect(hwnd) # 获取窗口坐标
width = right - left
height = bottom - top
hwndDC = win32gui.GetWindowDC(hwnd) # 获取窗口DC
mfcDC = win32ui.CreateDCFromHandle(hwndDC)
saveDC = mfcDC.CreateCompatibleDC()
saveBitMap = win32ui.CreateBitmap()
saveBitMap.CreateCompatibleBitmap(mfcDC, width, height)
saveDC.SelectObject(saveBitMap)
saveDC.BitBlt((0, 0), (width, height), mfcDC, (0, 0), win32con.SRCCOPY)
```
3. 将截图保存为bmp格式:
```python
saveBitMap.SaveBitmapFile(saveDC, 'screenshot.bmp')
```
4. 使用CV2读取保存的图片并进行处理:
```python
img = cv2.imread('screenshot.bmp')
# 进行图像处理操作
```
注意:由于截图保存的是bmp格式,CV2读取时需要使用cv2.IMREAD_UNCHANGED参数,否则可能会出现读取不正确的情况。例如:`img = cv2.imread('screenshot.bmp', cv2.IMREAD_UNCHANGED)`。
阅读全文