(必备技能)使用Python实现屏幕截图

news/2024/2/28 1:39:55

(必备技能)使用Python实现屏幕截图

文章目录

  • (必备技能)使用Python实现屏幕截图
    • 一、序言
    • 二、环境配置
      • 1、下载pyautogui包
      • 2、下载opencv-python包
      • 3、下载PyQt5包
      • 4、下载pypiwin32包
    • 三、屏幕截屏源码与解析
      • 1、使用pyautogui方法实现截屏
      • 2、使用PyQt方法实现截屏
        • a.获取窗口的句柄,也就是目标窗口名title。
        • b.使用PyQt5截屏核心程序
        • c.使用PyQt5截屏用Mat格式显示的核心程序
    • 四、结语

一、序言

在csdn上有很多纯copy,这给我复现带来了很大的麻烦,所以我想根据我的个人找截图的经历记录下来,给未来的自己看,免得忘记了云云。
由于我比较喜欢用opencv处理图像,所以截屏最后都会附带一个使用opencv显示图片的一个步骤。

二、环境配置

1、下载pyautogui包

pip install pyautogui -i https://pypi.tuna.tsinghua.edu.cn/simple/

注:使用pyautogui方法获取截屏的话,只下载这个就行了

2、下载opencv-python包

pip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple/

注:方便实现对图片的进一步处理,比如实时获取云云。

3、下载PyQt5包

pip install PyQt5 -i https://pypi.tuna.tsinghua.edu.cn/simple/

注:使用PyQt方法截屏下载介个

4、下载pypiwin32包

pip install pypiwin32 -i https://pypi.tuna.tsinghua.edu.cn/simple/

注:使用PyQt方法截屏下载介个

三、屏幕截屏源码与解析

1、使用pyautogui方法实现截屏

import pyautogui
import cv2
import numpy as npimg = pyautogui.screenshot(region=[300,50, 200, 100])  # 分别代表:左上角坐标,宽高
#对获取的图片转换成二维矩阵形式,后再将RGB转成BGR
#因为imshow,默认通道顺序是BGR,而pyautogui默认是RGB所以要转换一下,不然会有点问题
img = cv2.cvtColor(np.asarray(img), cv2.COLOR_RGB2BGR)cv2.imshow("截屏",img)
cv2.waitKey(0)

优点:

  1. 方便快捷,容易写核心部分就一行.
  2. 速度快0.04s左右,基本可以达到实时截屏的效果。
  3. 可以自由确定截屏区域

缺点:

  1. 但是不能指定获取程序的窗口,因此窗口也不能遮挡。

2、使用PyQt方法实现截屏

a.获取窗口的句柄,也就是目标窗口名title。

import win32guihwnd_title = dict() #创建字典保存窗口的句柄与名称映射关系def get_all_hwnd(hwnd, mouse):if win32gui.IsWindow(hwnd) and win32gui.IsWindowEnabled(hwnd) and win32gui.IsWindowVisible(hwnd):hwnd_title.update({hwnd: win32gui.GetWindowText(hwnd)})win32gui.EnumWindows(get_all_hwnd, 0)for h, t in hwnd_title.items():if t!= "":print(h, t)

注:程序会打印所有窗口的hwnd和title,有了title就可以进行截图了。

b.使用PyQt5截屏核心程序

from PyQt5.QtWidgets import QApplication
import win32gui
import sys
#这个是截取全屏的
hwnd = win32gui.FindWindow(None, 'C:/Windows/system32/cmd.exe')
app = QApplication(sys.argv)
screen = QApplication.primaryScreen()
img = screen.grabWindow(hwnd).toImage()
img.save("screenshot.jpg")

注:如果想截取特定的窗口,只需要将C:/Windows/system32/cmd.exe换成上一个程序中打印的title,并且保证那个窗口没有被你最小化即可

优点:

  1. 方便快捷,容易写核心部分就一行.
  2. 速度快0.04s左右,基本可以达到实时截屏的效果。
  3. 可以自由确定要截屏的窗口

缺点:

  1. 不可以自由确定截屏区域

c.使用PyQt5截屏用Mat格式显示的核心程序

def convertQImageToMat(incomingImage):'''  Converts a QImage into an opencv MAT format  '''# Format_RGB32 = 4,存入格式为B,G,R,A 对应 0,1,2,3# RGB32图像每个像素用32比特位表示,占4个字节,# R,G,B分量分别用8个bit表示,存储顺序为B,G,R,最后8个字节保留incomingImage = incomingImage.convertToFormat(4)width = incomingImage.width()height = incomingImage.height()ptr = incomingImage.bits()ptr.setsize(incomingImage.byteCount())arr = np.array(ptr).reshape(height, width, 4)  # Copies the data# arr为BGRA,4通道图片return arrfrom PyQt5.QtWidgets import QApplication
import win32gui
import sys
import cv2
import numpy as np
hwnd = win32gui.FindWindow(None, '剑士之魂中文版小游戏,在线玩,4399小游戏 - 360安全浏览器 13.1')
app = QApplication(sys.argv)
screen = QApplication.primaryScreen()
img = screen.grabWindow(hwnd).toImage()img=convertQImageToMat(img)#将获取的图像从QImage转换为RBG格式
cv2.imshow("asd",img)      #imshow
cv2.waitKey(0)

四、结语

我再查询了多个截屏的方法之后,发现就学会这两种截屏方法即可,所以就没有再放其他方法了


http://www.ppmy.cn/news/417888.html

相关文章

查看计算机屏幕颜色软件,电脑屏幕色彩调节工具(f.lux settings)

f.lux settings是一款可以自动调整电脑色彩的工具,这款软件可以帮助那些经常在电脑工作的朋友,更好的适应各种颜色的环境进行工作,更好的保护自己的眼睛! 屏幕颜色怎么调 屏幕颜色设置方法 1、对显示卡的参数就行调整 点击鼠标右键…

网页自适应电脑屏幕大小

1.网页宽度自适应&#xff0c;需要把网页元素宽度设置为百分比&#xff0c;还要在网页头部加上代码&#xff1a; <meta name"viewport" content"widthdevice-width,initial-scale1.0" />  widthdevice-width &#xff1a;宽度等于设备屏幕的宽度 in…

Java实现电脑屏幕的截取并保存成图片

其实截图的知识也不难 额(⊙o⊙)… 下面那个代码写辣么辣么长是俺的错 &#xff08;时隔一年我回来看一眼&#xff0c;忍不住道当年哪个傻B写的傻B玩意儿……心酸心累心惆怅&#xff09; 为了表达歉意 我特定重新写了一个放在最最最后面 截图主要用到ImageIO【保存成文件…

html设置背景图片自动适应屏幕大小,css适应屏幕 CSS背景图片自适应屏幕大小

怎么屏幕自适应????? 我全用了margin的百分比但依旧达不到自适应的/* 打印样式 */ @media print { color: red; } /* 手机等小屏幕手持设备 */ @media screen and (min-width: 320px) and (max-width: 480px) { body { background: yellow; } } /* 平板之类的宽度 1024 以…

计算机屏幕不清晰,电脑屏幕不清晰怎么调整

以Win10系统为例&#xff0c;具体操作如下&#xff1a; 一、重新设置显示器的分辨率 1、首先&#xff0c;打开一个文本文档或者浏览器页面&#xff0c;这样是为了反复调试的时候可以通过观察屏幕找到一个合适的清晰度。 2、将打开的窗口还原到小窗口状态&#xff0c;并在主界面…

计算机屏幕偏白,电脑屏幕显示泛白怎么修正

显示器使用久了难免会出现故障,那当屏幕显示泛白了,怎么办呢?下面是学习啦小编为大家介绍电脑屏幕显示泛白的修正方法,欢迎大家阅读。 电脑屏幕显示泛白的修正方法 1、打开控制面板,单击颜色管理,弹出颜色设置对话框,开始我们的设置 2、单击“高级”,如: 3、单击下面的…

如何部署免交互脚本

目录 一、免交互 什么是免交互 Here Document免交互 二、Expect概述 expect sed命令 三、如何用ssh实现免交互 四、监控硬盘实现免交互 五、创建硬盘分区如何实现免交互 一、免交互 什么是免交互 交互&#xff1a;需要人工发出指令&#xff0c;来控制程序的运行&…

开源阅读书源_开源阅读畅读全网图书 有声读物

很多朋友在闲暇之时或临睡前都喜欢读一读书&#xff0c;不管是喜欢任何方面的书籍&#xff0c;阅读总是始人快乐的一件事情。不过一些阅读软件不低的会员费用&#xff0c;付费后热门小说仍旧按章节收费等&#xff0c;都让人不爽。像我白嫖了京东阅读会员&#xff0c;可一些热门…

IT2014计算机考试题,2014年10月江苏省计算机等级考试全真试题1

江苏省计算机等级考试一级B全真试题,多联系,理论肯定没问题! 2014年10月江苏省计算机一级B全真理论试题IT1 一、判断题 1. 计算机的分类方法有多种&#xff0c;按照计算机的性能和用途来分类&#xff0c;台式机和便携机均属于传统的小型计算机。 2. 计算机病毒是指由于设计者在…

2021软考-信息处理员知识点汇总

一、Office办公软件 1.Excel 1.1 引用 1.1.1 相对引用 特性&#xff1a; 没加任何符号的就是相对引用相对地址在被复制或移动到其他单元格时&#xff0c;其单元格地址全部改变 例&#xff1a; 将公式 B1C1从D1单元格复制到D2单元格时&#xff0c;因为是相对引用。所以复制…

【历史上的今天】1 月 8 日:谷歌推出 Google Pay;Quibi 的重生;平衡二叉树的发明者出生

整理 | 王启隆 透过「历史上的今天」&#xff0c;从过去看未来&#xff0c;从现在亦可以改变未来。 今天是 2022 年 1 月 8 日&#xff0c;在 1942 年的今天&#xff0c;英国理论物理学家霍金&#xff08;Stephen Hawking&#xff09;出生&#xff1b;霍金在理论物理学中的贡献…

《痞子衡嵌入式半月刊》 第 36 期

痞子衡嵌入式半月刊&#xff1a; 第 36 期 元霜小说网 https://www.2173.info 这里分享嵌入式领域有用有趣的项目/工具以及一些热点新闻&#xff0c;农历年分二十四节气&#xff0c;希望在每个交节之日准时发布一期。 本期刊是开源项目&#xff08;GitHub: JayHeng/pzh-mcu-b…

学习一个新领域的知识的最佳方法和最快时间各是什么?

Liu Cao &#xff0c;「学习方法」是个伪命题 玉某人、冷峻、淡之 等人赞同 有个TED演讲简直是为这个问题量身订做的。 The first 20 hours-How to learn Anything. Josh Kaufman at TEDxCSU 首先&#xff0c;可能有些地方中文表达不够精到&#xff0c;所以我会尽量听写引用原…

在计算机网络中 为确保网络中不同计算机,2014年10月江苏省计算机等级考试全真试题1.pdf...

2014年 10月江苏省计算机一级 B全真理论试题 IT1 一、判断题 1. 计算机的分类方法有多种&#xff0c; 按照计算机的性能和用途来分类&#xff0c; 台式机和便携机均属于传 统的小型计算机。 2. 计算机病毒是指由于设计者在编写操作系统时考虑不周而留下的安全隐患。 3. 在Windo…

每周分享第 37 期

这里记录过去一周&#xff0c;我看到的值得分享的东西&#xff0c;每周五发布。 欢迎投稿&#xff0c;或推荐你自己的项目&#xff0c;请前往 GitHub 的 ruanyf/weekly 提交 issue。 (题图&#xff1a;安吉&#xff0c;浙江&#xff0c;2018) 前些日子&#xff0c;武侠小说泰斗…

碎片时间,用电纸书取代你的手机

碎片时间&#xff0c;用电纸书取代你的手机 在我们的日常生活和工作中&#xff0c;有很多碎片时间存在&#xff0c;上下班、排队、等车、等人。这些时间&#xff0c;很多人都会打开手机&#xff0c;刷微博、刷朋友圈、刷花边新闻&#xff0c;甚至玩一把网页游戏。如果你在你的手…

ssm基于java的线上阅读平台的设计与实现毕业设计源码291023

SSM线上阅读平台开发 摘 要 随着互联网趋势的到来&#xff0c;各行各业都在考虑利用互联网将自己推广出去&#xff0c;最好方式就是建立自己的互联网系统&#xff0c;并对其进行维护和管理。在现实运用中&#xff0c;应用软件的工作规则和开发步骤&#xff0c;采用SSM框架开发一…

(附源码)ssm基于java的线上阅读平台的设计与实现 毕业设计291023

SSM线上阅读平台开发 摘 要 随着互联网趋势的到来&#xff0c;各行各业都在考虑利用互联网将自己推广出去&#xff0c;最好方式就是建立自己的互联网系统&#xff0c;并对其进行维护和管理。在现实运用中&#xff0c;应用软件的工作规则和开发步骤&#xff0c;采用SSM框架开发一…

亚马逊kindle设置_亚马逊的新款Kindle Fire平板电脑:极客评论

亚马逊kindle设置 We got our Kindle Fire a few days ago, and since then we’ve been poking, prodding, and generally trying to figure out how to break it. Before you go out and buy your own, check out our in-depth review. 几天前&#xff0c;我们拿到了Kindle F…

博阅电纸书_【博阅likebook Mars电子书阅读器使用总结】APP|续航|屏幕_摘要频道_什么值得买...

博阅likebook Mars电子书阅读器使用总结(APP|续航|屏幕) 博阅likebook Mars电子阅读器采用了一块7.8英寸墨水屏&#xff0c;屏幕支持24级背光和背光冷暖调节&#xff0c;这样晚上或光线比较暗的情况也可以阅读了&#xff1b; 阅读器配件只有一根Mico-USB数据线&#xff0c;可以…
最新文章