Python中pillow可以实现截屏,然后利用opencv合成视频,达到录屏目的。
**
主要代码如下:
**
1.库文件导入
# -*- coding: utf-8 -*-
from PIL import ImageGrab
from pynput import keyboard
import numpy as np
import cv2
import threading
import time
import os
from tkinter import *
from tkinter.ttk import Combobox
from tkinter.filedialog import asksaveasfilename
from tkinter.filedialog import askopenfilename
from tkinter import messagebox
2.创建窗口类并初始化gui界面
class App:
def __init__(self):
self.MainWindow=Tk()
self.MainWindow.title('录屏')
self.MainWindow.resizable(0,0)
#self.MainWindow.overrideredirect(True)
self.MainWindow.iconbitmap('icon.ico')
self.res_frame=Frame(self.MainWindow)
self.res_frame.configure(height=100,width=2000)
self.lb_resolution=Label(self.res_frame,text='视频分辨率')
self.lb_resolution.pack(side=LEFT,padx=5)
cb_res_var=StringVar()
self.cb_resolution=Combobox(self.res_frame,textvariable=cb_res_var,state='readonly',width=4)
self.cb_resolution['value']=('全屏','0.9x','0.8x','0.7x','0.6x','0.5x','0.4x','0.3x','0.2x','0.1x')
self.cb_resolution.current(5)
self.cb_resolution.pack(side=LEFT,padx=5)
self.lb_speed=Label(self.res_frame,text='视频倍速')
self.lb_speed.pack(side=LEFT,padx=5)
cb_speed_var=StringVar()
self.cb_speed=Combobox(self.res_frame,textvariable=cb_speed_var,state='readonly',width=4)
self.cb_speed['value']=('0.1x','0.2x','0.4x','0.6x','0.8x','1.0x','2.0x','4.0x','6.0x','8.0x','10.0x')
self.cb_speed.current(5)
self.cb_speed.pack(side=LEFT,padx=5)
self.var_hide=BooleanVar()
self.var_hide.set(False)
self.cbtn_hide=Checkbutton(self.res_frame,text='录屏开始隐藏主窗口',variable=self.var_hide)