抓取屏幕内容并展示出来

抓取屏幕并展示

依旧是先导入需要的包
1
2
3
4
5
import cv2
import mss
import numpy as np
import win32con
import win32gui
然后就是我们抓取屏幕的小程序了
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
left = 2560 // 2
top = 1600 // 2
width = 2560 // 2
w = 2560 // 5
h = 1600 // 5

"""
可以用这个命令去获取当前屏幕分辨率
root = tk.Tk()
width = root.winfo_screenwidth()
height = root.winfo_screenheight()
"""
window_name = 'output'
sct = mss.mss()
monitor = { # monitor定义了截屏区域,单位是像素
"left": left, # left截屏区域的最左边
'top': top, # top是截屏区域的最上边
'width': width, # width是截屏区域的宽度
'height': height # height是截屏区域的高度
}

while True:
img = sct.grab(monitor) # 截屏并赋值给img
img = np.array(img) # 转换格式
cv2.resizeWindow(window_name, w, h) # 重设窗口大小
cv2.imshow(window_name, img) # 展示截屏内容

k = cv2.waitKey(250) # 等待250ms并监听键盘内容,不加这一段代码程序会卡死
hwnd = win32gui.FindWindow(None, window_name) # 置顶当前窗口,网上搜的不太明白
win32gui.SetWindowPos(hwnd, win32con.HWND_TOPMOST, 0, 0, 0, 0, win32con.SWP_NOMOVE | win32con.SWP_NOSIZE)
if k % 256 == 27: # 若用户按esc则结束
exit(0)