使用python跨平台录屏【基于OpenCV和pyautogui】

由于PIL的屏幕抓取只能在windows上可用,在linux上无法使用,故使用以下方法实现跨平台录屏。

import cv2
import pyautogui
import numpy as np
import time
import datetime
import threading

def screen_record():
    start_time = time.time()
    name = str(datetime.datetime.now()).split(".")[0].replace("-","_").replace(":", "_")
    _w, _h = pyautogui.size()  # 获取屏幕的宽度和高度
    fourcc = cv2.VideoWriter_fourcc(*"XVID")
    # 这里的f"{name}.avi"是输出文件的名称,fourcc是视频编解码器,20.0是帧速率,(_w, _h)是视频分辨率。
    video_writer = cv2.VideoWriter(f"{name}.avi", fourcc, 20.0, (_w, _h))
    while True:  # 这里使用PyAutoGUI库获取屏幕截图,并将其转换为OpenCV格式。然后将帧写入VideoWriter对象中。
        img = pyautogui.screenshot()
        frame = np.array(img)
        frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
        video_writer.write(frame)
        if time.time() - start_time > 5:  # 录制5s后停止
            break
    video_writer.release()  # 这将释放VideoWriter对象并保存录制的视频
    cv2.destoryAllWindows()  # 报错删掉

if __name__ == "__main__":
    th = thrading.Thread(target=screen_record)
    th.start()

你可能感兴趣的:(python,opencv,开发语言)