前段时间做视频时需要演示电脑端的操作,因此要用到屏幕录制,下载了个迅捷屏幕录制,但是没有vip录制的视频有水印且只能录制二分钟,于是鄙人想了下能不能通过万能的python来实现呢?经过一晚上的尝试发现这条路是可以走的通的。分享一下自己的想法,整体思路是PIL模块中的ImageGrab不停的获得当前屏幕,利用opencv写入视频流话不多说,直接上代码,有什么更好的建议,欢迎大家交流!

"""python + opencv 实现屏幕录制_by-_Zjh_"""

from PIL import ImageGrab

import numpy as np

import cv2

p = ImageGrab.grab()#获得当前屏幕

k=np.zeros((200,200),np.uint8)

a,b=p.size#获得当前屏幕的大小

fourcc = cv2.VideoWriter_fourcc(*'XVID')#编码格式

video = cv2.VideoWriter('test.avi', fourcc, 16, (a, b))#输出文件命名为test.mp4,帧率为16,可以自己设置

while True:

im = ImageGrab.grab()

imm=cv2.cvtColor(np.array(im), cv2.COLOR_RGB2BGR)#转为opencv的BGR格式

video.write(imm)

cv2.imshow('imm', k)

if cv2.waitKey(1) & 0xFF == ord('q'):

break

video.release()

cv2.destroyAllWindows()

在停止录制的时候我自己采用的是opencv的q键盘退出,实际上还是会有个黑框弹出来,如果有更好的退出录制方式请留下您的建议,本次还有个不足的地方是没有增加录制声音的功能。最近事情太多了,等放假了出一个完整版的GUI程序。好了今天就先到这了,快要考线性系统这门课了,得开始复习了

最近接触了 pynput 这个强大的三方库,可以全局监听键盘、鼠标事件。把以前的屏幕录制的程序改进一下!请忽略以前的程序,直接看这个!

"""

python 屏幕录制改进版,无opencv黑框显示!

@zhou 2020/1/29_

"""

from PIL import ImageGrab

import numpy as np

import cv2

import datetime

from pynput import keyboard

import threading

flag=False #停止标志位

def video_record():

"""

屏幕录制!

:return:

"""

name = datetime.datetime.now().strftime('%Y-%m-%d %H-%M-%S') #当前的时间

p = ImageGrab.grab() # 获得当前屏幕

a, b = p.size # 获得当前屏幕的大小

fourcc = cv2.VideoWriter_fourcc(*'XVID') # 编码格式

video = cv2.VideoWriter('%s.avi'%name, fourcc, 20, (a, b)) # 输出文件命名为test.mp4,帧率为16,可以自己设置

while True:

im = ImageGrab.grab()

imm=cv2.cvtColor(np.array(im), cv2.COLOR_RGB2BGR)#转为opencv的BGR格式

video.write(imm)

if flag:

print("录制结束!")

break

video.release()

def on_press(key):

"""

键盘监听事件!!!

:param key:

:return:

"""

#print(key)

global flag

if key == keyboard.Key.esc:

flag=True

print("stop monitor!")

return False #返回False,键盘监听结束!

if __name__=='__main__':

th=threading.Thread(target=video_record)

th.start()

with keyboard.Listener(on_press=on_press) as listener:

listener.join()

现在录制就不用之前那个黑框了,按 esc按键 直接停止录制!

PS:在通过代码给大家介绍下python 实现屏幕录制

PIL 即pollow 的安装命令如下:

pip install pillow

其中cv2的安装是下面这条命令

pip install opencv-python

代码实现:

# coding: utf-8

from PIL import ImageGrab

import numpy as np

import cv2

fps = 20

start = 3 # 延时录制

end = 15 # 自动结束时间

curScreen = ImageGrab.grab() # 获取屏幕对象

height, width = curScreen.size

video = cv2.VideoWriter('video02.avi', cv2.VideoWriter_fourcc(*'XVID'), fps, (height, width))

imageNum = 0

while True:

imageNum += 1

captureImage = ImageGrab.grab() # 抓取屏幕

frame = cv2.cvtColor(np.array(captureImage), cv2.COLOR_RGB2BGR)

# 显示无图像的窗口

cv2.imshow('capturing', np.zeros((1, 255), np.uint8))

# 控制窗口显示位置,方便通过按键方式退出

cv2.moveWindow('capturing', height - 100, width - 100)

if imageNum > fps * start:

video.write(frame)

# 退出条件

if cv2.waitKey(50) == ord('q') or imageNum > fps * end:

break

video.release()

cv2.destroyAllWindows()

总结

到此这篇关于Python实现屏幕录制功能的文章就介绍到这了,更多相关python 屏幕录制内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

本文标题: Python实现屏幕录制功能的代码

本文地址: http://www.cppcns.com/jiaoben/python/301956.html

python 屏幕录制_Python实现屏幕录制功能的代码相关推荐

  1. python 12306登录_Python 实现12306登录功能实例代码

    下面一段代码给大家带来了python实现12306登录功能,具体代码如下所示: #!/usr/bin/env python import requests import urllib.parse im ...

  2. 基于python的土壤细菌在kobas库的功能预测代码

    以下是一个基于Python的土壤细菌在KOBAS库的功能预测代码.在运行之前,需要先安装相关的Python库,如biopython.pandas.numpy.matplotlib等. # 导入必要的库 ...

  3. python汇率转换_python 实现汇率计算功能

    1 用import 代码导入相关模块,具体代码如下: import urllib.request import re 2 用input 代码和用户交互,提示用户输入美元的数值,具体代码如下: usd ...

  4. python实现屏幕视频录制_Python实现屏幕录制功能的代码

    前段时间做视频时需要演示电脑端的操作,因此要用到屏幕录制,下载了个迅捷屏幕录制,但是没有vip录制的视频有水印且只能录制二分钟,于是鄙人想了下能不能通过万能的python来实现呢?经过一晚上的尝试发现 ...

  5. python实现屏幕录制_Python实现屏幕录制功能的代码

    前段时间做视频时需要演示电脑端的操作,因此要用到屏幕录制,下载了个迅捷屏幕录制,但是没有vip录制的视频有水印且只能录制二分钟,于是鄙人想了下能不能通过万能的python来实现呢?经过一晚上的尝试发现 ...

  6. python延时函数_Python实现屏幕自动截图

    教程目录 需要实现的功能:自动屏幕截图 具体需求: 1. 支持设置截图频率和截图文件存储路径 2. 在存储截图时判断与前一张截图的相似度,只有屏幕发生了显著的变化才存储截图 所需技术(搜索关键词): ...

  7. python加颜色_Python 给屏幕打印信息加上颜色的实现方法

    语法 print('\033[显示方式;字体色;背景色m文本\033[0m') # 三种设置都可以忽略不写,都不写则为默认输出 配置如下 # 字体 背景 颜色 # ------------------ ...

  8. python syslog 接口_python接口测试之日志功能

    之前在简书中看了一篇关于日志功能的文档,供大家参考:https://www.jianshu.com/p/62f7b49b41e7 Python通过logging模块提供日志功能,所以直接导入即可 im ...

  9. python 装机配置_Python实现自动装机功能案例分析

    前言 提示:在管理服务器的过程中,发现有很多服务器在启动的过程中默认以PXE方式启动,这就导致我们无法将PXE装机程序放开到所有的交换机端口中,本文是以Python对dell服务器进行了一些控制,更多 ...

最新文章

  1. 实战讲解Python函数参数
  2. 89岁屠呦呦再次震惊世界!视频介绍疟疾、青蒿素和背后的故事
  3. 算法导论之斐波那契堆
  4. 洛谷——P1002 过河卒||codevs——T1010 过河卒
  5. 随想(二):简化别人的工作,就是简化自己的工作,节省自己的时间
  6. git wechat.class.php,wechat-php-sdk/qywechat.class.php at master · gitye/wechat-php-sdk · GitHub
  7. 此次边路调整系统推荐射手走哪路_王者荣耀:S15射手最新梯度排行,马可T2,狄仁杰T1,T0仅剩两位...
  8. 第6章 循环、批量传送和条件转移-1.34h
  9. flex eclipse综合spring入门
  10. Java 8.9 游戏:井字游戏(C++Java)
  11. 【建模算法】基于遗传算法求解TSP问题(Python实现)
  12. 【程序员读书】读阮一峰最新作《未来世界的幸存者》有感
  13. 新技術讓大數據“看得見”
  14. Typecho 个人支付宝微信收款插件 TePay
  15. estimate和estimation
  16. 英语各句子成分的主要作用
  17. linux 网络拦截ws,如何拦截linux信号? (在C中)
  18. 香农密码理论汇总:完善保密性
  19. cmd提示 'node' 不是内部或外部命令,也不是可运行的程序
  20. Genesis公链:夯实Web 3.0发展底座

热门文章

  1. android系统tee接口,Android操作系统上的TEE / HSM支持
  2. 语音识别数据集处理python进行音频处理
  3. 软件测试(一):概念篇
  4. Android 性能优化
  5. 一个简单的struts的例子
  6. 不能正常关机的处理办法
  7. php 浅复制 和 深复制(clone)
  8. 优化算法optimization:AdaDelta
  9. 新手探索NLP(六)——全文检索
  10. Influxdb1.2.2安装