python实现录制全屏和选择区域录屏功能,参数,程序,左键,全屏,屏幕

python实现录制全屏和选择区域录屏功能

易采站长站,站长之家为您整理了python实现录制全屏和选择区域录屏功能的相关内容。

最近给客户演示程序运行结果,我就想到用Python写一个录屏程序,在网上能找到现成的源码,但是它的录屏是录制整个屏幕的。但是在屏幕桌面下方的任务栏工具栏里有些东西,不希望被录制到视频里,因此需要实现一个选择区域录屏,就像qq截图那样的。我编写的程序如下,在主函数的输入参数里有一个选项控制是全屏录制还是选择区域录制。在编写这个程序时,我有一个疑问,在初始化写视频VideoWriter函数的第4个参数,它表示视频帧的高和宽,全屏录制方式的参数是(height,width),选择区域录制的参数是(width,height)。我曾尝试过把这个参数统一写成(height,width)或者(width,height)。但是运行程序后,总有一种录屏方式保存的视频文件是无法打开的,文件大小是1kb,不知这是为何?

import cv2

from PIL import ImageGrab

import numpy as np

import argparse

import time

global img

global point1, point2

def on_mouse(event, x, y, flags, param):

global img, point1, point2

img2 = img.copy()

if event == cv2.EVENT_LBUTTONDOWN: # 左键点击

point1 = (x, y)

cv2.circle(img2, point1, 10, (0, 255, 0), thickness=2)

cv2.imshow('image', img2)

elif event == cv2.EVENT_MOUSEMOVE and (flags & cv2.EVENT_FLAG_LBUTTON): # 按住左键拖曳

cv2.rectangle(img2, point1, (x, y), (255, 0, 0), thickness=2)

cv2.imshow('image', img2)

elif event == cv2.EVENT_LBUTTONUP: # 左键释放

point2 = (x, y)

cv2.rectangle(img2, point1, point2, (0, 0, 255), thickness=2)

cv2.imshow('image', img2)

def select_roi(frame):

global img, point1, point2

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

winname = 'image'

cv2.namedWindow(winname, cv2.WINDOW_NORMAL)

cv2.setWindowProperty(winname, cv2.WND_PROP_FULLSCREEN, cv2.WINDOW_FULLSCREEN)

cv2.setMouseCallback(winname, on_mouse)

cv2.imshow(winname, img)

cv2.waitKey(0)

cv2.destroyAllWindows()

return point1, point2

if __name__ == '__main__':

parser = argparse.ArgumentParser()

parser.add_argument('--fps', type=int, default=10, help='frame per second')

parser.add_argument('--total_time', type=int, default=15, help='video total time')

parser.add_argument('--savename', type=str, default='video.mp4', help='save file name')

parser.add_argument('--screen_type', default=1, type=int, choices=[0, 1], help='1: full screen, 0: region screen')

args = parser.parse_args()

print('等到3秒,请切换到录屏的页面')

if args.screen_type==0:

print('Press Esc to close window')

time.sleep(3)

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

if args.screen_type:

height, width = curScreen.size

min_x, min_y, max_x, max_y = 0, 0, width, height

fourcc = cv2.VideoWriter_fourcc(*'mp4v')

video = cv2.VideoWriter(args.savename, fourcc, args.fps, (height, width))

else:

point1, point2 = select_roi(curScreen)

min_x = min(point1[0], point2[0])

min_y = min(point1[1], point2[1])

max_x = max(point1[0], point2[0])

max_y = max(point1[1], point2[1])

height, width = max_y - min_y, max_x - min_x

fourcc = cv2.VideoWriter_fourcc(*'mp4v')

video = cv2.VideoWriter(args.savename, fourcc, args.fps, (width, height))

imageNum = 0

while True:

imageNum += 1

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

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

if args.screen_type==0:

frame = frame[min_y:max_y, min_x:max_x, :]

if imageNum < args.fps * args.total_time:

video.write(frame)

# 退出条件

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

break

video.release()

cv2.destroyAllWindows()

到此这篇关于python实现录制全屏和选择区域录屏功能的文章就介绍到这了,更多相关python录屏内容请搜索易采站长站以前的文章或继续浏览下面的相关文章希望大家以后多多支持易采站长站!以上就是关于对python实现录制全屏和选择区域录屏功能的详细介绍。欢迎大家对python实现录制全屏和选择区域录屏功能内容提出宝贵意见

python 录屏_python实现录制全屏和选择区域录屏功能相关推荐

  1. python 录屏_python实现录制全屏和选择区域录屏功能代码

    本篇文章小编给大家分享一下python实现录制全屏和选择区域录屏功能代码,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. 代码如下: import cv ...

  2. 录屏储存失败因为5823_如何解决iPhone录屏提示储存录制失败的问题 iPhone录屏提示储存录制失败的解决方法...

    如何解决iPhone录屏提示储存录制失败的问题 ?现在使用苹果手机的用户有很多,最近有用户反映,使用iphone录屏提示储存录制失败.下面就是iPhone录屏提示储存录制失败的解决方法,一起来看看吧! ...

  3. python 投屏_python脚本调用scrcpy进行多设备投屏

    之前由于自己工作需要两个手机演示我写的微信小程序,所以写了一篇文章分享了我的小工具,没想到得到大家的欢迎,本次对该脚本重新进行了小小的修改优化,且将脚本代码发不出来,本人python小白,高手请忽略我 ...

  4. 绘王两款便携数位屏同时发售,全贴合防眩光屏配硬笔

    2020年11月11日,知名数字绘画设备品牌绘王(HUION)发售两款新数位屏产品--Kamvas 12与Kamvas 16(2021).其中Kamvas 12是绘王迄今尺寸最小.最轻的数位屏,重量仅 ...

  5. 华为鸿蒙智慧屏发布会视频,华为全屋智能及智慧屏新品发布会直播-鸿蒙,智慧屏 ——快科技--科技资讯专业发布平台...

    12月21日下午2:39,华为将举行华为全屋智能及智慧屏新品发布会.本次发布会快科技全程图文直播和报道,敬请关注. 自华为推出智慧屏品类以来,整个行业掀起了一场波澜,不少厂商纷纷跟进,智慧屏成为了不少 ...

  6. python打开浏览器全屏_python 设置网页全屏显示

    备注:安装pyqt 1.sudo apt-get -y install python-qt4 2.sudo apt-get install python-dev 3.sudo apt-get inst ...

  7. python发送文件_Python发送邮件(最全)

    简单邮件传输协议(SMTP)是一种协议,用于在邮件服务器之间发送电子邮件和路由电子邮件. Python提供smtplib模块,该模块定义了一个SMTP客户端会话对象,可用于使用SMTP或ESMTP侦听 ...

  8. python pdf报告_Python实现html转换为pdf报告(生成pdf报告)功能示例

    本文实例讲述了Python实现html转换为pdf报告(生成pdf报告)功能.分享给大家供大家参考,具体如下: 1.先说下html转换为pdf:其实支持直接生成,有三个函数pdfkit.f 安装pyt ...

  9. python progressbar 倒计时_Python使用progressbar模块实现的显示进度条功能

    本文实例讲述了Python使用progressbar模块实现的显示进度条功能.分享给大家供大家参考,具体如下: progressbar安装: pip install progressbar 用法一 # ...

  10. python熊猫图案_Python熊猫:您可能不知道的技巧和功能

    python熊猫图案 Pandas is a foundational library for analytics, data processing, and data science. It's a ...

最新文章

  1. jq修改iframe html代码,jQuery控制iFrame(实例代码)
  2. 在文件中查找指定字符串
  3. 【百度地图API】建立全国银行位置查询系统(四)——如何利用百度地图的数据生成自己的标注...
  4. 解放双手|Python 自动搜索、翻译、存储文献标题摘要!
  5. angular4更改表单中显示的值_angular4 Form表单相关
  6. c语言的单行注释范围,c语言中的注释,multi-line comment
  7. 生物科研神器!30分钟把人家一天的工作都给干完了!
  8. 另一种将线程并入应用程序的方法-委托
  9. 西瓜书《机器学习》线性模型 对数几率(逻辑)回归公式推导
  10. python实现xml数据解析处理
  11. c++ 自定义 比较器 priority_queue_吃透Java集合系列七:PriorityQueue
  12. 给MDK5/KEIL5安装51/ARM编译坏境
  13. Envi监督分类,主要是随机森林分类
  14. 入侵检测系统建设及常见入侵手法应对
  15. Macbook Pro Air锁屏不进入睡眠
  16. 手机配置host的替代方案
  17. Step3:获得单应矩阵(每张图片需要m个棋盘格角点,m≥4)
  18. python 【面向对象实例2】
  19. HTC Desire HD(DHD G10) 刷机时MIUI卡在htc开机画面的解决方法
  20. 一)中央空调变风量变水量整体群控节能系统(专利技术)

热门文章

  1. Android - scheme 一个app跳转另一个app、模块开发
  2. 如何解决微信小程序加载慢的问题?
  3. E. Fruit Slicer--计算几何+两圆公切线
  4. widows计算器恢复
  5. maven Filtering true 作用
  6. tensorflow模型量化篇(1)量化方法及动态范围量化
  7. linux图片裁剪软件安卓版,照片裁剪软件下载-照片裁剪 安卓版v2.2-PC6安卓网
  8. Java 图片转换base64
  9. MFC使用SQLite 学习系列 一: SQLITE_MISUSE错误
  10. win10命令提示符怎么打开_技巧,win10蓝屏SYSTEM_PTE_MISUSE怎么解决