最新要闻
- 小米汽车前脸设计图疯传 王化回应:早期招标设计稿 并非最终版
- 全球热点!女子吐槽羽绒服到东北变嘎嘣脆 为什么遇冷会变硬?
- 环球热消息:太假了!网友分析《三体》动画B站真实评分为2.1分
- 焦点速递!《流浪地球2》TC版已流出 官博呼吁大家抵制盗版:文明观影
- 每日看点!大过年的临时工玩呢 AMD又搞了个乌龙:锐龙7000X3D不能超频
- 天天简讯:彻底离开中国制造不现实 未来苹果将有25%产品来自印度
- 世界关注:“终极功率半导体”获突破性进展!金刚石有望成为终极半导体材料
- 每日动态!NASA第一架电动飞机即将上天 官宣至今已过去7年
- 世界实时:全球最高安全标准 我国自研第三代核电华龙一号稳步推进:1台年发电100亿度
- 天天日报丨RTX 4060 Ti性能、价格逼近RTX 3070 网友质疑:升级图啥
- steam春节特卖:11款热卖大作 部分游戏低至2折
- 全球视点!猪肉没有以前香了 我们的餐桌已被洋猪肉占据 鲜香早已不复当年
- 天天亮点!马斯克为“特斯拉私有化推文案”辩护:本可通过出售SpaceX的股份完成融资
- 环球快报:阿里云盘TV版上线 电视上直接看网盘里的大片
- 中科院研发新一代“电力银行”:充满可供20万人用一天
- 载人登月巨无霸 长征九号重型火箭将于2035年前后首飞
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
世界视点!python简单实现对桌面进行实时捕捉画面
介绍
最近在研究目标检测方面的小东西,需要到对桌面进行实时捕捉画面,获取画面后再检测,达到实时桌面目标检测的目的,所以写了一段小代码来实现该功能,实测速度很快,符合我的需求。特此记录一下。
代码
import argparseimport timeimport cv2import keyboardimport mssimport numpy as npimport win32com.clientimport win32conimport win32guiclass ScreenCapture: """ parameters ---------- screen_frame : Tuple[int, int] 屏幕宽高,分别为x,y region : Tuple[float, float] 实际截图范围,分别为x,y,(1.0, 1.0)表示全屏检测,越低检测范围越小(始终保持屏幕中心为中心) window_name : str 显示窗口名 exit_key : int 结束窗口的退出键值,为键盘各键对应的ASCII码值,默认是ESC键 """ def __init__(self, screen_frame=(1920, 1080), region=(0.5, 0.5), window_name="test", exit_key=0x1B): self.parser = argparse.ArgumentParser() self.parser.add_argument("--region", type=tuple, default=region, help="截图范围;分别为x,y,(1.0, 1.0)表示全屏检测,越低检测范围越小(始终保持屏幕中心为中心)") self.parser_args = self.parser.parse_args() self.cap = mss.mss(mon=-1, optimize=True) # 实例化mss,并使用高效模式 self.screen_width = screen_frame[0] # 屏幕的宽 self.screen_height = screen_frame[1] # 屏幕的高 self.mouse_x, self.mouse_y = self.screen_width // 2, self.screen_height // 2 # 屏幕中心点坐标 # 截图区域 self.GAME_WIDTH, self.GAME_HEIGHT = int(self.screen_width * self.parser_args.region[0]), int( self.screen_height * self.parser_args.region[1]) # 宽高 self.GAME_LEFT, self.GAME_TOP = int(0 + self.screen_width // 2 * (1. - self.parser_args.region[0])), int( 0 + 1080 // 2 * (1. - self.parser_args.region[1])) # 原点 self.RESZIE_WIN_WIDTH, self.RESIZE_WIN_HEIGHT = self.screen_width // 4, self.screen_height // 4 # 显示窗口大小 self.mointor = { "left": self.GAME_LEFT, "top": self.GAME_TOP, "width": self.GAME_WIDTH, "height": self.GAME_HEIGHT } self.window_name = window_name self.Exit_key = exit_key def grab_screen_mss(self, monitor): # cap.grab截取图片,np.array将图片转为数组,cvtColor将BRGA转为BRG,去掉了透明通道 return cv2.cvtColor(np.array(self.cap.grab(monitor)), cv2.COLOR_BGRA2BGR) def run(self): SetForegroundWindow_f = 0 # 判断是否需要置顶窗口 while True: # 判断是否按下 ctrl+U 窗口始终置顶 if keyboard.is_pressed("ctrl+U"): while keyboard.is_pressed("ctrl+U"): continue if SetForegroundWindow_f == 0: SetForegroundWindow_f = 1 time.sleep(1) continue else: SetForegroundWindow_f = 0 img = self.grab_screen_mss(self.mointor) cv2.namedWindow(self.window_name, cv2.WINDOW_NORMAL) # cv2.WINDOW_NORMAL 根据窗口大小设置图片大小 cv2.resizeWindow(self.window_name, self.RESZIE_WIN_WIDTH, self.RESIZE_WIN_HEIGHT) cv2.imshow(self.window_name, img) if SetForegroundWindow_f == 1: shell = win32com.client.Dispatch("WScript.Shell") shell.SendKeys("%") win32gui.SetForegroundWindow(win32gui.FindWindow(None, self.window_name)) win32gui.ShowWindow(win32gui.FindWindow(None, self.window_name), win32con.SW_SHOW) if cv2.waitKey(1) & 0XFF == self.Exit_key: # 默认:ESC cv2.destroyAllWindows() exit("结束")
代码讲解
功能实现思路主要是使用 mss 库进行截图,并使用 opencv 库进行图像显示和处理。
首先,使用 argparse 库解析传入的参数,设置检测范围的大小。
(资料图片)
然后,使用 mss 库实例化一个截图对象 cap 。
接着,设置屏幕的宽和高,并计算屏幕中心点的坐标。
之后,根据传入的参数计算游戏内截图区域的宽高和原点坐标,并将其保存在变量 mointor 中。
定义了一个函数 grab_screen_mss ,使用 cap.grab 截取图片,并用 np.array 将图片转为数组,然后用 cvtColor 将 BRGA 转为 BRG ,去掉了透明通道。
定义了一个 run 函数,在其中不断循环,判断是否按下 ctrl+U ,若按下,则窗口始终置顶。
然后调用 grab_screen_mss 函数获取截图,使用 cv2 库进行图像显示,并设置显示窗口的大小。
如果窗口需要置顶,则使用 win32com 库和 win32gui 库置顶窗口。
最后,使用 cv2 库的 waitKey 函数等待用户操作,按下 ESC 键退出程序。
调用示例
sc = ScreenCapture() sc.run()
参数解释:
screen_frame : Tuple[int, int]
屏幕宽高,分别为x,y region : Tuple[float, float] 实际截图范围,分别为x,y,(1.0, 1.0)表示全屏检测,越低检测范围越小(始终保持屏幕中心为中心) window_name : str 显示窗口名 exit_key : int 结束窗口的退出键值,为键盘各键对应的ASCII码值,默认是ESC键
其他
键盘各键对应的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 键
-
世界实时:学习笔记——Linux中搜索查找类命令;压缩和解压类;Linux挂载和卸载;进程线程类命令;RPM;YUM
2023-01-24一、搜索查找类命令1、find命令(1)find-name"* txt"(功能描述:查找当前目录下包含“ tx...
来源: 世界视点!python简单实现对桌面进行实时捕捉画面
小米汽车前脸设计图疯传 王化回应:早期招标设计稿 并非最终版
全球热点!女子吐槽羽绒服到东北变嘎嘣脆 为什么遇冷会变硬?
世界实时:学习笔记——Linux中搜索查找类命令;压缩和解压类;Linux挂载和卸载;进程线程类命令;RPM;YUM
环球热消息:太假了!网友分析《三体》动画B站真实评分为2.1分
焦点速递!《流浪地球2》TC版已流出 官博呼吁大家抵制盗版:文明观影
2023牛客寒假算法基础集训营1 个人题解(ACDHKL)
每日看点!大过年的临时工玩呢 AMD又搞了个乌龙:锐龙7000X3D不能超频
天天简讯:彻底离开中国制造不现实 未来苹果将有25%产品来自印度
世界关注:“终极功率半导体”获突破性进展!金刚石有望成为终极半导体材料
每日动态!NASA第一架电动飞机即将上天 官宣至今已过去7年
世界实时:全球最高安全标准 我国自研第三代核电华龙一号稳步推进:1台年发电100亿度
环球今日报丨学习笔记——CentOS中的时间日期类命令;用户管理类命令(useradd,passwd ,id,su ,userdel,who ,usermod,
天天日报丨RTX 4060 Ti性能、价格逼近RTX 3070 网友质疑:升级图啥
steam春节特卖:11款热卖大作 部分游戏低至2折
读函数式编程思维笔记05_现实应用
每日热点:学习笔记——CentOS中的帮助命令;常用快捷键;文件目录类命令
全球视点!猪肉没有以前香了 我们的餐桌已被洋猪肉占据 鲜香早已不复当年
天天亮点!马斯克为“特斯拉私有化推文案”辩护:本可通过出售SpaceX的股份完成融资
环球快报:阿里云盘TV版上线 电视上直接看网盘里的大片
中科院研发新一代“电力银行”:充满可供20万人用一天
载人登月巨无霸 长征九号重型火箭将于2035年前后首飞
天天实时:国产2TB PCIe 4.0 SSD只要749元:搭载长江存储TLC颗粒 京东自营5年质保
当前报道:俄罗斯黑客攻破《暗黑破坏神4》测试版 自己开私服
世界头条:猫人石墨烯抗菌男士内裤三条装下单9折 29元
AMD官方确认:锐龙7000X3D系列将支持超频
春节档票房破30亿 暂列2023全球第一:《流浪地球2》独占10亿
世界今头条!游客遭遇山寨兵马俑、秦皇陵 大喊退票:专家科普真景点只看这两处
雷军安利MIUI“称呼计算器”:再也不怕过年喊错亲戚了
全球热头条丨499元买iPhone SE的羊毛没了!苹果bug已修复:下单的不认账
滚动:九旬老人花21万买17个金镯子送晚辈!网友羡慕了:满满都是爱
全球即时看!大神挑战32MB内存运行Win7系统 花2年时间减少4MB占用
万兆25Gbps:胜为万兆八类网线7.5米23.9元
清仓抄底:太平鸟夹克/棒球服等199-259元大额券
天天热消息:魔兽等7款暴雪游戏关服 网易公布退款说明:2月1日开放
环球快资讯:C919大飞机即将迎来兔年第一飞:很快就能商业载客了
今日热议:中国暴雪玩家的“最后一天”:走过地图每一处 把自己存进骨灰盒
环球热推荐:男子回应特斯拉充14次电回东北:并没有特别多的充电焦虑
热点!windows11 彻底修改c盘中文用户名
热资讯!8、CSS权威指南--第四章(p121)值和单位
18年青春结束了 魔兽世界国服正式关闭:期待再相逢
世界新动态:通用8位SPI接口模块——verilog实现
【环球报资讯】[概率论与数理统计]笔记:4.2 统计量
【世界聚看点】国产DDR5价格屠夫 金百达32GB 6400MHz内存999元(CL32低延迟)
http基础(随缘更新)
两人合作小品成春晚亮点 马丽回应离开沈腾就不行了:我俩都是1
春节看哪部电影?雷军没选《流浪地球2》 听网友的看了《无名》
易烊千玺主演电影票房破150亿:新片《满江红》正在热映
春节警惕“节日病”:过度饮酒易引发胰腺疾病
【报资讯】气温最低零下53℃ 大兴安岭女子回家发现单元门冻成冰窖
网络编程
【教程】配置多个SSH-Key
世界简讯:MySQL笔记01: MySQL入门_1.2 MySQL下载安装与配置
环球最资讯丨时隔3年 一加将再发概念机:搭载颠覆性技术
全球播报:吴孟达再现《流浪地球2》引热议 网友:看到达叔泪目
天天快播:学习笔记——Liunx中CentOS中的有关(network)的命令;其他命令;关机重启命令
天天快讯:区块链基础入门(一)
全球视点![概率论与数理统计]笔记:4.1 总体与样本
热点在线丨曝iPhone 15 Pro屏幕边框收窄:全系都是灵动岛设计
资讯推荐:漠河零下53℃是什么体验?冻梨能把板砖敲稀碎
PDF划词翻译
带薪撸猫!95后宠托师春节保底收入过万:工作氛围很轻松
最长已经12年了!聊聊那些龟速进步的笔记本电脑部件
全球消息!今晚停服!网易发布致暴雪国服玩家的告别信:会服务到最后一刻
当前热讯:小米2023年安卓之光!小米13 Ultra现身:1英寸徕卡影像之王预定
世界新消息丨黑鲨唯一在售机型!黑鲨5 RS京东有货:2499元
全球热推荐:不过兔年过猫年 越南也有春晚 网友:有VCD卓依婷那味了
天天微速讯:不锈钢保温又保冷 富光316L畅饮杯59元包邮(日常99元)
环球时讯:春节档总票房破20亿:《流浪地球2》领衔 同步冲击好莱坞
“中国造”的土耳其最快地铁正式开跑:时速120km 全自动驾驶
学习笔记——Liunx;Linux文件与目录结构;VI/VIM编辑器(一般模式、编辑模式、命令模式)
天天快播:微软Windows系统开发生变:Win10渐成弃儿 Win12呼之欲出
卷轴屏短期量产无望:困难重重
春节档破19亿 《流浪地球2》领跑:主演吴京总票房即将突破300亿
网友晒山东过年名场面:家族人共行磕头礼 仪式感拉满
iPhone 14 Pro不再是美国5G网速最快:被三星、谷歌超越
张艺谋执导!孙红雷谈《满江红》:超出预期 预测票房20亿起
【天天新要闻】曝iPad Pro明年有重大升级:玻璃材质、OLED屏幕
当前信息:今天上演2023年首场“星月童话”:肉眼可见金星、土星相伴月球
读函数式编程思维笔记04_语言与范式_模式与重用
头条:你看了吗?2023央视春晚触达110亿人次 年轻人占比过半
天天头条:气象台发布寒潮蓝色!山东断崖式降温:冷成了“山冻”
微资讯!魔兽世界国服关服最后一天 别忘了电子骨灰盒:24日停止
邓超王二妮春晚登台演唱!导演组:“一稳一疯”
全球视讯!小米汽车机密信息被曝光 设计神似特斯拉Model 3
焦点速读:夏普推出了NEC P627UL激光投影机:亮度高达6200ANSI流明
学习笔记——SSM整合(思路、步骤)
《流浪地球2》看不懂?专业科普来了 刷完电影来看看
焦点滚动:美国海关拆坏任天堂游戏稀有原封卡带:价值离谱
每年在中国收入500亿:连苹果都惹不起它
环球要闻:牌面!曙光新型计算机亮相《流浪地球2》
全球热点评!高端顶级大屏Win掌机!AYANEO KUN官宣:中文名叫“鲲”
世界信息:女子网购短裤7个月后异地签收 包裹跑遍广州、北京全国多地
【世界热闻】老外愤怒!2000块的旗舰SSD 990PRO 写了2T寿命暴跌至95%:竟遭三星拒保
焦点消息!适配器模式
环球百事通!《流浪地球2》上映首日吸金4.4亿!吴京主演作品票房突破290亿元
世界报道:男子包饺子放金戒指被网友质疑 霸气回应称自家开金店、寓意长寿多福
吃年夜饭鱼刺卡喉 医生一晚接诊近40例 提醒:切勿自行处理
沈腾可能要请很多人吃饭了!讲述小品《坑》背后:临场改词
山东一大妈首次放加特林烟花犹如上战场:网友评价“入戏太深”