添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

使用Python实现屏幕截图的两种方法

作者:SUNxRUN

Python作为一种高效的编程语言,可以通过一些库来实现对屏幕的截图操作,本文主要介绍了使用Python实现屏幕截图的两种方法,具有一定的 参考价值,感兴趣的可以了解一下

下载 pyautogui

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

下载OpenCV

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

下载PyQT5

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

下载pypiwin32

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

【1】使用pyautogui方法实现截屏;

import pyautogui
import cv2
import numpy as np
# 下面的数字分别代表:左上角横向坐标,左上角纵向坐标,截取图像的宽度,截取图像的高度;
img = pyautogui.screenshot(region=[0, 0, 1902, 1080])
# 将获取的图像转换成二维矩阵形式,然后再将RGB转成BGR
# 因为`imshow`默认通道顺序是`BGR`,而`pyautogui`默认是`RGB`所以要转换一下
img = cv2.cvtColor(np.asarray(img), cv2.COLOR_RGB2BGR)
cv2.imshow("截屏", img)
cv2.waitKey(0)
  • 此方法不能指定获取指定程序的窗口,因此窗口也不能被遮挡;

【2】使用win32gui方法实现截屏;

  • 获取目标程序窗口的句柄和标题;
  • 打印所有窗口的hwndtitle
  • 根据窗口句柄就可以进行指定截图了;
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)
import win32gui
# GetDesktopWindow 获得代表整个屏幕的一个窗口(桌面窗口)句柄
hd = win32gui.GetDesktopWindow()
# 获取所有子窗口
hwndChildList = []
win32gui.EnumChildWindows(hd, lambda hwnd, param: param.append(hwnd), hwndChildList)
for hwnd in hwndChildList:
    print("句柄:", hwnd, "标题:", win32gui.GetWindowText(hwnd))
    # f.write("句柄:" + str(hwnd) + " 标题:" + win32gui.GetWindowText(hwnd) + '\n')

3802250 mouseControle – OpenCVDemo.py
3278598 此电脑

  • 使用PyQt5进行全屏的截取操作;
  • 如果想截取特定的窗口,只需要将C:/Windows/system32/cmd.exe换成上一个程序中打印的title,并且保证那个窗口没有被你最小化即可;
import sys
import win32gui
from PyQt5.QtWidgets import QApplication
# 这个是全屏窗口
hwnd = win32gui.FindWindow(None, 'C:/Windows/system32/cmd.exe')
# 这个是指定程序
# hwnd = win32gui.FindWindow(None, win32gui.GetWindowText(3212524))
app = QApplication(sys.argv)
screen = QApplication.primaryScreen()
img = screen.grabWindow(hwnd).toImage()
img.save(r"C:\Users\SUNxRUN\Desktop\screenshot.jpg")
# 前置窗口 win32gui.SetForegroundWindow(hwnd)
  • 暂时废弃;
  • 实时使用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实现屏幕截图的两种方法的文章就介绍到这了,更多相关Python 屏幕截图内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 

您可能感兴趣的文章:
  • Python中的TfidfVectorizer参数使用解析
    Python中的TfidfVectorizer参数使用解析
    2023-11-11
  • 详解如何使用opencv实现图片相似度检测
    详解如何使用opencv实现图片相似度检测
    2023-12-12
  • Python中TCP协议的探索与实例解析
    Python中TCP协议的探索与实例解析
    2023-12-12
  • Python开发必备知识内存管理与垃圾回收
    Python开发必备知识内存管理与垃圾回收
    2023-11-11
  • Python字符串模糊匹配工具TheFuzz的用法详解
    Python字符串模糊匹配工具TheFuzz的用法详解
    2023-11-11
  • 详解Python虚拟机是如何实现闭包的
    详解Python虚拟机是如何实现闭包的
    2023-11-11
  • 使用Python删除文本文件中特定行的操作方法
    使用Python删除文本文件中特定行的操作方法
    2023-11-11
  • Java开发者如何快速进修Python指南之网络编程及并发编程
    Java开发者如何快速进修Python指南之网络编程及并发编程
    2023-11-11
  • 美国设下计谋,用娘炮文化重塑日本,已影响至中国
    美国设下计谋,用娘炮文化重塑日本,已影响至中国
    2021-11-19
  • 时空伴随者是什么意思?时空伴随者介绍
    时空伴随者是什么意思?时空伴随者介绍
    2021-11-09
  • 工信部称网盘企业免费用户最低速率应满足基本下载需求,天翼云盘回应:坚决支持,始终
    工信部称网盘企业免费用户最低速率应满足基本下载需求,天翼云盘回应:坚决支持,始终
    2021-11-05
  • 2022年放假安排出炉:五一连休5天 2022年所有节日一览表
    2022年放假安排出炉:五一连休5天 2022年所有节日一览表
    2021-10-26
  • 电脑版 - 返回首页

    2006-2024 脚本之家 JB51.Net , All Rights Reserved.
    苏ICP备14036222号