python简单实现对桌面进行实时捕捉画面

介绍

最近在研究目标检测方面的小东西,需要到对桌面进行实时捕捉画面,获取画面后再检测,达到实时桌面目标检测的目的,所以写了一段小代码来实现该功能,实测速度很快,符合我的需求。特此记录一下。

代码

代码讲解

首先,使用 argparse 库解析传入的参数,设置检测范围的大小。

接着,设置屏幕的宽和高,并计算屏幕中心点的坐标。

定义了一个函数 grab_screen_mss ,使用 cap.grab 截取图片,并用 np.array 将图片转为数组,然后用 cvtColor 将 BRGA 转为 BRG ,去掉了透明通道。

定义了一个 run 函数,在其中不断循环,判断是否按下 ctrl+U ,若按下,则窗口始终置顶。

如果窗口需要置顶,则使用 win32com 库和 win32gui 库置顶窗口。

最后,使用 cv2 库的 waitKey 函数等待用户操作,按下 ESC 键退出程序。

调用示例

sc = ScreenCapture()
    sc.run()

参数解释:

screen_frame : Tuple[int, int]

其他

键盘各键对应的ASCII码值 (0x指16进制,delete键的ascii码值是0x2e,也即十进制的46)

0x1 鼠标左键 0x2 鼠标右键 0x3 CANCEL 键 0x4 鼠标中键 0x8 BACKSPACE 键 0x9 TAB 键 0xC CLEAR 键 0xD ENTER 键 0x10 SHIFT 键 0x11 CTRL 键 0x12 MENU 键 0x13 PAUSE 键 0x14 CAPS LOCK 键 0x1B ESC 键 0x20 SPACEBAR 键 0x21 PAGE UP 键 0x22 PAGE DOWN 键 0x23 END 键 0x24 HOME 键 0x25 LEFT ARROW 键 0x26 UP ARROW 键 0x27 RIGHT ARROW 键 0x28 DOWN ARROW 键 0x29 SELECT 键 0x2A PRINT SCREEN 键 0x2B EXECUTE 键 0x2C SNAPSHOT 键 0x2D INSERT 键 0x2E DELETE 键 0x2F HELP 键 0x90 NUM LOCK 键

A 至 Z 键与 A – Z 字母的 ASCII 码相同:

值 描述 65 A 键 66 B 键 67 C 键 68 D 键 69 E 键 70 F 键 71 G 键 72 H 键 73 I 键 74 J 键 75 K 键 76 L 键 77 M 键 78 N 键 79 O 键 80 P 键 81 Q 键 82 R 键 83 S 键 84 T 键 85 U 键 86 V 键 87 W 键 88 X 键 89 Y 键 90 Z 键

0 至 9 键与数字 0 – 9 的 ASCII 码相同:

值 描述 48 0 键 49 1 键 50 2 键 51 3 键 52 4 键 53 5 键 54 6 键 55 7 键 56 8 键 57 9 键

下列常数代表数字键盘上的键:

值 描述 0x60 0 键 0x61 1 键 0x62 2 键 0x63 3 键 0x64 4 键 0x65 5 键 0x66 6 键 0x67 7 键 0x68 8 键 0x69 9 键 0x6A MULTIPLICATION SIGN (*) 键 0x6B PLUS SIGN (+) 键 0x6C ENTER 键 0x6D MINUS SIGN (–) 键 0x6E DECIMAL POINT (.) 键 0x6F DIVISION SIGN (/) 键

下列常数代表功能键:

值 描述 0x70 F1 键 0x71 F2 键 0x72 F3 键 0x73 F4 键 0x74 F5 键 0x75 F6 键 0x76 F7 键 0x77 F8 键 0x78 F9 键 0x79 F10 键 0x7A F11 键 0x7B F12 键 0x7C F13 键 0x7D F14 键 0x7E F15 键 0x7F F16 键

经验分享 程序员 微信小程序 职场和发展