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

这篇具有很好参考价值的文章主要介绍了(必备技能)使用Python实现屏幕截图。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

一、序言

在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 np

img = 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、使用win32gui方法实现截屏

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

hwnd_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.实时使用win32gui截屏用Mat格式显示的核心程序
import win32gui
import cv2
import numpy as np
from PIL import ImageGrab  # 操作图像
hwnd = win32gui.FindWindow(None, 'QQMail - Inbox - 360极速浏览器X 21.0')#第二个参数需要用二、a、那个程序运行来获得
while True:
    x_start, y_start, x_end, y_end = win32gui.GetWindowRect(hwnd)
    # 坐标信息
    box = (x_start, y_start, x_end, y_end)
    image = ImageGrab.grab(box)
    img=cv2.cvtColor(np.asarray(image),cv2.COLOR_RGB2BGR)
    cv2.imshow('Img',img)
    cv2.waitKey(1)

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

四、结语

我再查询了多个截屏的方法之后,发现就学会这两种截屏方法即可,所以就没有再放其他方法了
到时候,只用下载你需要用的那个方法所要的包即可文章来源地址https://www.toymoban.com/news/detail-468903.html

到了这里,关于(必备技能)使用Python实现屏幕截图的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • chatgpt赋能python:Python屏幕截图:完美的方法记录你的屏幕

    Python作为一种高级编程语言,被广泛用于开发各种应用程序和游戏,其中之一就是屏幕截图。 在本文中,我们将介绍使用Python进行屏幕截图的方法和技巧。 屏幕截图是指将电子屏幕上的图像、文字、视频等内容保存下来的过程。它可以记录您正在计算机中看到的所有内容,

    2024年02月08日
    浏览(38)
  • HarmonyOS实战开发-通过screenshot模块实现屏幕截图 。

    本示例展示全屏截图和屏幕局部截图。 本示例通过screenshot模块实现屏幕截图 ,通过window模块实现隐私窗口切换,通过display模块查询当前隐私窗口。 使用说明: 点击右上角图标打开弹窗,选择截屏,展示全屏截图;选择局部截屏,选择截屏区域,点击右下角完成,展示局部

    2024年04月13日
    浏览(29)
  • Python 使用 PyQt5 实现截图

    原文链接:https://www.cpweb.top/2566 使用 PyQt5 实现截图功能,功能点: • 选框截图:鼠标左键选择区域双击截屏,右击重新截图。 • 全屏截图:不选区域,直接鼠标双击截全屏。

    2024年02月14日
    浏览(30)
  • chatgpt赋能python:Python自动化:提升SEO效果的必备技能

    随着互联网的快速发展,SEO已经成为大多数企业网络营销的。提升SEO效果需要不断地对网站进行优化,而网站的更新频率、文章的质量和的选择都是至关重要的因素。然而,人工操作复杂的SEO任务往往效率低下。但我们可以通过Python编写脚本来实现自动化,提高

    2024年02月08日
    浏览(38)
  • 测试开发工程必备技能之一:Mock的使用

    在实际产品开发过程中,某个服务或前端依赖一个服务接口,该接口可能依赖多个底层服务或模块,或第三方接口,比如说服务 A 依赖服务B,服务B又依赖服务 C,如下图所示: 这种依赖的问题会导致原本的需求目的是要验证服务A,但由于所依赖的服务B或者服务C不稳定或者

    2024年02月11日
    浏览(34)
  • chatgpt赋能python:Python如何分行——提高代码可读性和效率的必备技能

    分行,即将一行长代码分为多行,使得代码更加易读、易维护、易修改。 Python作为一门高级编程语言,具有简洁、易读、高效的特点。但在实际编程过程中,难免会遇到较长的代码行,导致代码可读性下降,不利于程序员的开发和维护。因此,Python中分行技术就显得尤为重要

    2024年02月08日
    浏览(34)
  • 使用Python和OpenCV实现实时人脸检测并保存截图

    在本篇博客中,我们将使用Python和OpenCV库实现一个实时人脸检测的小项目。我们将利用OpenCV中的Haar级联分类器来检测摄像头捕获的图像中的人脸。 通过摄像头实时捕获视频流。 使用Haar级联分类器检测视频帧中的人脸。 在检测到的人脸周围绘制矩形框。 实时显示检测结果。

    2024年02月11日
    浏览(29)
  • C#截图操作屏幕不完整/多屏幕共同截图解决

    使用C#如下代码进行截图 会发现截取出的图片左上角(Top、Left)是正确的,但是右下角(Size)却比屏幕小 图1为截图结果(1707*960),图2为完整屏幕(2560*1440) 对比不难发现,图1的长和高只有图2的1/1.5,也就是截图出来的大小,是经过window缩放的。 即代码:Screen.AllScreens

    2024年02月12日
    浏览(33)
  • 【PyAutoGUI操作指南】05 屏幕截图与图像定位:截图+定位单个目标+定位全部目标+灰度匹配+像素匹配+获取屏幕截图中像素的RGB颜色

    PyAutoGUI可以拍摄屏幕截图,将其保存到文件中,并在屏幕中定位图像。OSX使用操作系统附带的screencapture命令。Linux使用scrot命令,可以通过运行sudo-apt-get-install-scrot来安装该命令。 功能介绍:一个需要点击的按钮,并且想在屏幕上找到它。

    2024年02月14日
    浏览(26)
  • 树莓派Ubuntu:屏幕截图

    1. 系统自带截图工具 使用键盘的\\\"prt sc\\\"截图 2. 使用scrot 安装 查看安装版本 截图

    2024年01月20日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包