其它可使用的参数,可以通过
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` 函数销毁所有窗口,并释放资源。
这仅仅是一个
TecoGAN图像增强
m0_54834800:
使用openpose计算人体骨骼角度
spokenman:
最新嘴型融合模型SadTalker
咸鱼翻身:
openpose重绘json里的骨骼信息
∂ヾ(❀╹◡╹)ノ~: