python opencv 录制视频_OpenCV Python 录制视频
学到实用OpenCV调用笔记本电脑的摄像头,并录制视频保存到本地硬盘的时候,出现了一点故障,那就是获取到的文件总是为0KB。经过一番查找,终于找到了解决办法。
调用摄像头
调用摄像头作为本实验的基础是必不可少的,因为我们很有可能在初始化的这一步出错,而导致整个视频录制的失败。
引入库支持
import cv2
初始化
初始化的时候,参数可以是整数,也可以是外部的视频文件的名称。这里需要强调的是整数类型。
通常来说,笔记本电脑内置了一个摄像头,我们用0代表,其余的外接摄像头我们可以按照具体的情况来使用1,2,3··· ··· 来进行调用和数据的采集。
cap = cv2.VideoCapture(0)
有的时候,我们初始化完成了,但是并不知道到底成功了没有,这时,我们可以调用cap.isOpened()方法来侦测。
调整界面大小
默认的窗体界面是640X480的,但是我们却也可以修改,有固定方式和可任意调节方式。
固定大小方式:
cap = cv2.VideoCapture(0)
# cap.set(3,1080)
# cap.set(4,720)
窗口可任意调节方式:
cv2.namedWindow(cv2.WINDOW_NORMAL)
实时显示
实时显示就是将OpenCV采集到的一帧一帧的数据实时的显示到界面窗体上。
import cv2
# 初始化摄像头
cap = cv2.VideoCapture(0)
while cap.isOpened():
# 采集一帧一帧的图像数据
isSuccess,frame = cap.read()
# 实时的将采集到的数据显示到界面上
if isSuccess:
cv2.imshow("My Capture",frame)
# 实现按下“q”键退出程序
if cv2.waitKey(1)&0xFF == ord('q'):
break
# 释放摄像头资源
cap.release()
cv2.destoryAllWindows()
如此,便可以实时的获取到摄像头采集到的数据了。
录制视频并保存
学会了如何采集数据,下一步就是将采集到的数据写入到一个视频文件中。这就涉及到了编码的问题了,因为将图片写到视频文件中需要实时的压缩,处理。所以我们的电脑上要装有相应的码库。
fourcc问题解决
一开始我是用的fourcc是:
fourcc = cv2.VideoWriter_fourcc(*"XVID")
但是总是不能正确的录制出视频文件,显示大小为0KB。最后发现是电脑上没有响应的视频解码库导致的。
解决办法:
一开始按照网上的参考资料,说是将out的第二个参数写为-1,这样运行的时候会弹出系统拥有的压缩方式,即可解决。但是在博主亲试之下,完美的失败了。 :(
第二种方式,博主亲测有效,改变了fourcc的类型。
fourcc = cv2.cv.CV_FOURCC("D", "I", "B", " ")
代码实现
下面看一个完整的录制视频的小例子。
# coding:utf-8
import sys
reload(sys)
sys.setdefaultencoding('utf8')
# __author__ = '郭 璞'
# __date__ = '2016/9/7'
# __Desc__ = 使用Python借助opencv实现对图像的读取,写入
import cv2
import numpy as np
# 选取摄像头,0为笔记本内置的摄像头,1,2···为外接的摄像头
cap = cv2.VideoCapture(0)
# cap.set(3,1080)
# cap.set(4,720)
# 为保存视频做准备
fourcc = cv2.cv.CV_FOURCC("D", "I", "B", " ")
# 第三个参数则是镜头快慢的,20为正常,小于二十为慢镜头
out = cv2.VideoWriter('output2.avi', fourcc,3.0,(640,480))
while True:
# 一帧一帧的获取图像
ret,frame = cap.read()
if ret == True:
frame = cv2.flip(frame, 1)
# 在帧上进行操作
# gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
# 开始保存视频
out.write(frame)
# 显示结果帧
cv2.imshow("frame", frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
else:
break
# 释放摄像头资源
cap.release()
out.release()
cv2.destroyAllWindows()
效果展示
亲测有效!
总结
本次试验收获有:
如何使用OpenCV配合Python实时捕获摄像头数据
windows下录制视频文件大小为零的异常
修改图像显示窗体大小的两种方式
录制视频的过程中,输出为快慢镜头的调节方式
python opencv 录制视频_OpenCV Python 录制视频相关推荐
- python opencv压缩图片_OpenCV Python 缩放图片
By 凌顺 2019年9月12日 本示例使用的OpenCV版本是:4.1.1 运行Python的编辑器:Jupyter notebook 示例目的 使用OpneCV的cv2.resize()函数对图片 ...
- python+opencv 实现图像人脸检测及视频中的人脸检测
执着于理想,纯粹于当下. 文章目录 一.数据和知识准备 1. 下载HAAR与LBP数据 2. opencv相关知识 二.python+opencv实现人脸检测 1. 图像单人脸检测 2. 图像多人脸检 ...
- Python OpenCV高速公路道路汽车车辆摄像头视频侦测检测识别统计数量
Python OpenCV高速公路道路汽车车辆侦测检测识别统计数量 如需安装运行环境或远程调试,可加QQ905733049由专业技术人员远程协助! 运行结果如下: 运行主要代码如下: import c ...
- Python+OpenCV 图像处理系列(2)—— 视频捕获、播放和保存
1.视频捕获 为了获取视频,首先需要创建一个 VideoCapture 类对象.它的参数可以是设备的索引号,或者是一个视频文件.设备索引号就是在指定要使用的摄像头.一般的笔记本电脑都有内置摄像头.所以 ...
- 使用Python+OpenCV将连续图片生成avi视频
import cv2 import osim_dir = '...' # 图片存储路径 video_dir = '.../a.avi' # 视频存储路径及视频名 fps = 30 # 帧率一般选择20 ...
- python opencv图像匹配_关于python:OpenCV功能匹配多个图像
如何使用FLANN优化许多图片的SIFT功能匹配? 我有一个从Python OpenCV文档中获取的工作示例.然而,这是将一个图像与另一个图像进行比较而且速度很慢.我需要它来搜索一系列图像(几千个)中 ...
- python制作七夕礼物_OpenCV+Python制作程序七夕(情人节)礼物
1. 按 不知不觉七夕就过去了! 如果有对象,祝早生贵子!没有对象,祝早结连理! (搞笑一下,祝大家幸福美满吧,嘿嘿嘿) 给大家准备了一份已经写好的代码,利用Python+OpenCV+OpenPyX ...
- python制作七夕礼物_opencv+python制作硬核七夕礼物
点击上方"蓝色小字"关注我呀 明天就是七夕了! 如果有对象,祝早生贵子!没有对象,祝早结连理! (搞笑一下,祝大家幸福美满吧,嘿嘿嘿) 给大家准备了一份已经写好的代码,利用pyth ...
- Python opencv库 tkinter 设计屏幕录制工具
有时, 我们在电脑上需要录屏, 或制作gif动画, 用于演示电脑操作等.如何使用Python来实现? 目录 1.使用cv2库生成视频 2.使用tkinter选择录制区域 3.再次实现 4.最终的程序 ...
最新文章
- web developer tips (51):使用vs2005和IE8进行调试
- python excel合并_Python把多个Excel合并成一个Excel
- DNN结构演进History—CNN-GoogLeNet :Going Deeper with Convolutions
- java 高级编程进阶_JAVA高级编程之hibernate进阶学习
- 谷歌浏览器无网络连接 打不开网页解决办法
- ssh 配置文件中 maxsessions 与 MaxStartups
- vscode远程无法更新
- 中国酸2-葡萄糖苷(AA2G)市场趋势报告、技术动态创新及市场预测
- 【肌电信号】基于matlab GUI肌电信号处理【含Matlab源码 966期】
- 阿里矢量图标库 - Unicode 方式使用说明(两种用法)
- 计算机应用基础知识竞赛题,计算机基础知识题库
- 已知鸡兔共35只c语言,三支一扶行测备考数量关系:简单计算之鸡兔同笼
- AngularJS - uib-datepicker-popup - 日期控件
- LncRNA与代谢组联合分析
- AUI素材网-网站模板源码下载
- python 创建netcdf_如何用python netCDF4创建netCDF文件?
- python+大数据-MySQL-day02(黑马)
- 斗地主手牌(水贴ψ(*`ー´)ψ)
- 5G uRLLC技术及其与TSN的融合
- arduino loar_采用ESP8266和Arduino设计基于IoT的患者健康监测系统
热门文章
- apache站点优化—数据压缩
- Java语言类的作用,java 语言Class类的作用,怎么使用?
- 晓曼机器人能恢复出厂设置吗_手机出毛病了就恢复出厂设置,会损伤手机吗?影响有多大呢...
- linux系统查看性能,linux查看操作系统(linux查看性能)
- 阿里云IoT戴高:IoT场景化的本质是打造数智空间
- 「应用管理与交付」为什么会成为云原生新的价值聚焦点?
- 评审恩仇录——我为什么愿意执行代码评审
- 10年后,阿里给千万开源人写了一封信
- 如何让快递更快?菜鸟自研定时任务调度引擎首次公开
- 如何扛住1.8亿/秒的双11数据洪峰?阿里流计算技术全揭秘