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

news/2024/10/11 17:15:30/

(必备技能)使用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;可一些热门…