Python如何录制屏幕?本文教你使用 pyautogui 和 OpenCV 录制显示屏幕视频并将其保存到 Python 文件中。
屏幕录制使你能够创建演示视频、记录游戏成就以及创建可在社交媒体上在线共享的视频。有许多工业软件可以帮助你很容易地做到这一点。在本教程中,你将学习如何使用 Python 制作你自己的简单屏幕录像机,你可以进一步扩展以满足你自己的需求。
相关: 如何使用隐写术在 Python 中隐藏图像中的秘密数据。
让我们开始
Python录制屏幕示例吧,首先,安装本教程所需的依赖项:
pip3 install numpy opencv-python pyautogui
如何用Python记录屏幕?过程如下:
- 使用pyautogui捕获屏幕截图。
- 将该屏幕截图转换为numpy数组。
- 使用OpenCV 中的视频编写器将该numpy数组写入具有正确格式的文件。
导入必要的模块:
import cv2
import numpy as np
import pyautogui
让我们初始化用于编写视频文件的格式(名为“output.avi”):
# display screen resolution, get it from your OS settings
SCREEN_SIZE = (1920, 1080)
# define the codec
fourcc = cv2.VideoWriter_fourcc(*"XVID")
# create the video write object
out = cv2.VideoWriter("output.avi", fourcc, 20.0, (SCREEN_SIZE))
注意:你需要从操作系统中获取正确SCREEN_SIZE
的屏幕分辨率,否则写入文件将不起作用(或者,你可以使用pyautogui.size()
函数来获取主显示器的大小)。
Python如何录制屏幕?Fourcc是OpenCV将用来编写视频文件的视频编解码库,我们在这里指定了
XVID。的
20.0作为第三个参数,以传递浮点值cv2.VideoWriter对应于FPS(
FRAME
FER
SEcond)。
Python录制屏幕示例介绍:现在我们需要继续捕获屏幕截图并循环写入文件,直到用户单击“q”按钮,这是主循环:
while True:
# make a screenshot
img = pyautogui.screenshot()
# convert these pixels to a proper numpy array to work with OpenCV
frame = np.array(img)
# convert colors from BGR to RGB
frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
# write the frame
out.write(frame)
# show the frame
cv2.imshow("screenshot", frame)
# if the user clicks q, it exits
if cv2.waitKey(1) == ord("q"):
break
# make sure everything is closed when exited
cv2.destroyAllWindows()
out.release()
首先,我们使用screenshot()函数返回一个图像对象,因此我们需要将其转换为适当的numpy数组。之后,我们需要将该帧转换为
RGB,这是因为OpenCV默认使用
BGR。
如何用Python记录屏幕?正如
pyautogui 的官方文档中所述,你还可以通过传递
region
关键字参数来仅记录屏幕的区域,该参数是一个四整数元组,表示要捕获的区域的
顶部、
左侧、
宽度 和
高度 ,这是它的方式完毕:
img = pyautogui.screenshot(region=(0, 0, 300, 400))
录制完成后,只需单击
“q”,它就会破坏窗口并完成写入文件,试试吧!
此外,你可以用循环替换该
while True
语句,
for
如下Python录制屏幕示例所示:
for i in range(200):
# make a screenshot
img = pyautogui.screenshot()
# the rest of the code...
这将记录你的屏幕10秒,那是因为我们将 FPS 设置为20(这是有道理的,因为200是20乘以10)
Python如何录制屏幕?你可以使用无穷无尽的想法来扩展它。例如,你可以将其与录音机结合使用,你将获得一个同时记录屏幕和语音的 Python 工具,你将需要使用一个记录音频的线程和另一个用于屏幕记录器的线程,让我们知道你在下面的评论中取得了进步!
或者你可以创建开始、暂停和停止录制的键盘快捷键,本教程可以帮助你。