相关文章推荐

其它可使用的参数,可以通过 mss -h 来查看

$ mss -h
usage: mss [-h] [-c COORDINATES] [-l {0,1,2,3,4,5,6,7,8,9}] [-m MONITOR]
           [-o OUTPUT] [-q] [-v]
optional arguments:
  -h, --help            show this help message and exit
  -c COORDINATES, --coordinates COORDINATES
                        the part of the screen to capture: top, left, width,
                        height
  -l {0,1,2,3,4,5,6,7,8,9}, --level {0,1,2,3,4,5,6,7,8,9}
                        the PNG compression level
  -m MONITOR, --monitor MONITOR
                        the monitor to screen shot
  -o OUTPUT, --output OUTPUT
                        the output file name
  -q, --quiet           do not print created files
  -v, --version         show program's version number and exit

我们来看2个部分的内容,第一个是截图,也是它的基本功能

# 导入模块
import mss
# 实例化对象
with mss.mss() as sct:
    # 通过参数output指定保存的文件名
    sct.shot(output='output.png')

shot 方法中还有一个参数 callback ,方便我们使用回调

import mss
def fun_callback(filename):
    # 作为示例,打印下截取的文件名
    print(filename)
with mss.mss() as sct:
    # 通过参数output指定保存的文件名
    filename = sct.shot(output='output.png', callback=fun_callback)

如果是截取部分窗口

import mss
with mss.mss() as sct:
    # 设置一个区域,top为距离屏幕左上角的垂直方向上的距离,left是水平方向的距离,后面2个分别是宽和高
    monitor = {"top":50, "left":50, "width": 600, "height": 400}
    image_sct = sct.grab(monitor)
    # 转换成png保存起来
    mss.tools.to_png(image_sct.rgb, image_sct.size, output="output.png")

如果需要将 mss 的图片格式转换成 PIL ,可以这样

import mss
from PIL import Image
with mss.mss() as sct:
    # 设置一个区域,top为距离屏幕左上角的垂直方向上的距离,left是水平方向的距离,后面2个分别是宽和高
    monitor = {"top":50, "left":50, "width": 600, "height": 400}
    image_sct = sct.grab(monitor)
    image_pil = Image.frombytes('RGB', image_sct.size, image_sct.bgra, 'raw', 'BGRX')
    image_pil.save('output_pil.png')

第二个实例,我们来看看如何录屏?这里,需要借助一下 opencv ,直接看代码

import mss
import cv2
import numpy as np
from PIL import Image
monitor = {"top":50, "left":50, "width": 600, "height": 400}
fourcc = cv2.VideoWriter_fourcc(*'MJPG')
fps = 20
video = cv2.VideoWriter('output.avi', fourcc, fps, (600, 400))
with mss.mss() as sct:
    # 设置一个区域,top为距离屏幕左上角的垂直方向上的距离,left是水平方向的距离,后面2个分别是宽和高
    while True:
        image_sct = sct.grab(monitor)
        image_pil = Image.frombytes('RGB', image_sct.size, image_sct.bgra, 'raw', 'BGRX')
        image_cv = np.array(image_pil)
        video.write(image_cv)
        if cv2.waitKey(25) & 0xFF == ord('q'):
            break
video.release()

更多详细资料请参考官方链接 https://github.com/BoboTiG/python-mss

Python实用模块专题

更多有用的 python 模块,请移步

https://xugaoxiang.com/category/python/modules/

环境windows 10 64bitpython 3.8mss 6.1.0前言python-mss 是一个速度非常快的截图工具,支持跨平台,使用纯 python 语言开发。安装使用 pip 安装,执行命令pipinstallmsspython-mss 还提供了命令行工具,使用 mss 就可以直接截取屏幕,默认是全屏其它可使用的参数,可以通过 mss -h 来查看$mss-husage:... 1、全屏 截图 按下键盘 的‘PRTSC’或者‘Print Screen’键,即可实现全屏 截图 (不同键盘位置和名称可能不同)。此时,并不能看到效果,只是将 截图 保存在粘贴板 ,我们打开Word或者其它windows自带的画图板工具(以画图板工具为例)。我们打开画图板直接按下‘Ctrl’+ 'V'粘贴即可。然后你可以对该图片执行其它操作了。 2、截取当前活动窗口 女朋友是一个老师,在工作 经常会遇到需要 录屏 记录自己操作,方便后续开发同学定位。因为 录屏 软件动不动就开始收费,所以她经常更换 录屏 软件。闲暇之余,我就觉得手痒,感觉可以用万能的 Python 来解决她的烦恼。 我上网搜寻了一下相关知识,录制视频基本上都用的图像处理库 PIL 的 ImageGrab 模块。这个模块可以用于将当前屏幕的内容或者剪贴板上的内容拷贝到 PIL 图像内存。 既然这个模块可以获取当前屏幕上的内容,那么我一直不间断地获取,然后把这些获取的内容拼起来,那不就是视频了吗?
python 图像库( Python Image Library,PIL)原来只支持 python 2 后面移植到 python 3 的Pillow 库所以使用时需要安装这个库,但是调用时依然是PIL这个库 2.这个库 截图 主要有两个 方法 如下 ImageGrab.grab()、ImageGrab.grabclipboard() from PIL import ImageGrab, Image import time im1 = ImageGrab.grab() # 截屏操作 默认全屏 # im1 = ImageG.
红框内的是获得当前监视器设备的全屏尺寸。也可以可以不要,可以直接给w,h赋值,指定宽度和高度。红框上面的是获得设备准备条件。 第一个红线,是左边距和上边距填充背景色黑色,默认(0,0)就好,也可以自己试试。这里不加图了。 第二个红线就是指定的图片宽和高(>0)。第三个红线,所 截图 的左上角的坐标,若小于0,越界部分则填充黑色。
文章目录写在前面优点缺点安装使用 简单 使用主要 方法 截图 为文件 方法 一: `m.shot` 方法 二: `m.grab`速度太大?用PIL补充:旧版注意 这个MSS大概是Many Screen Shot的缩写,意为多窗口截屏,是使用ctypes的 截图 。别看它用ctypes调用系统API,它却能跨平台(win, linux ,mac)不得不说作者还是很强大的 Github 官方文档 小,压缩(whl)后仅76MB 快,我的surface上大概0.2~0.5s一张(1920x1440px)当然,
# 定义视频编码器并创建 VideoWriter 对象 fourcc = cv2.VideoWriter_fourcc(*'XVID') out = cv2.VideoWriter('output.avi', fourcc, 20.0, (640,480)) while True: # 读取帧 ret, frame = video_capture.read() # 如果帧读取成功,将其写入输出视频文件 if ret: out.write(frame) # 显示当前帧 cv2.imshow('Video', frame) # 按 q 键退出循环 if cv2.waitKey(1) & 0xFF == ord('q'): break # 释放资源 video_capture.release() out.release() cv2.destroyAllWindows() 在这段代码 ,我们首先使用 `cv2.VideoCapture` 函数打开了系统的摄像头(在这里使用的是默认的摄像头,即编号为 0 的摄像头)。然后,我们使用 `cv2.VideoWriter_fourcc` 函数定义了视频编码器,并使用 `cv2.VideoWriter` 函数创建了一个 `VideoWriter` 对象。接下来,我们在循环 不断读取帧,并将其写入输出视频文件。最后,我们使用 `cv2.destroyAllWindows` 函数销毁所有窗口,并释放资源。 这仅仅是一个 运行的时候出现以下是正常的吗 表情包 URI encoding = 'CP936' converted 'http://HR/vid4.zip' (CP936) -> 'http://HR/vid4.zip' (UTF-8) --2023-04-12 20:21:14-- http://hr/vid4.zip Resolving hr (hr)... seconds 0.00, failed: 不知道这样的主机。 . wget: unable to resolve host address 'hr' TecoGAN图像增强 m0_54834800: 同问,请问你2.5以上版本可以吗 使用openpose计算人体骨骼角度 spokenman: 你好最近在做这个方面的毕设,怎么把py跑出来的坐标变成那种骨骼框架呢 最新嘴型融合模型SadTalker 咸鱼翻身: openpose重绘json里的骨骼信息 ∂ヾ(❀╹◡╹)ノ~: 为什么我的results是空的
 
推荐文章