京公网安备 11010802034615号
经营许可证编号:京B2-20210330
作者:闲欢
来源:Python 技术
前几天有个读者在粉丝群里面提了一个问题:
Python 怎样提高视频清晰度和对比度?
我之前没有涉及到使用 Python 操作视频这一方面,所以当时很抱歉地跟读者朋友说暂未涉及。
这两天想了下,感觉应该补一下这一块的内容,一方面是增加自己涉猎的广度,另一方面也可以给粉丝答疑解惑。
今天先分享一下 Python 操作视频最基本的操作,包括读取和播放视频和保存视频。
要捕获视频,你需要创建一个 VideoCapture 对象。它的参数可以是设备索引或视频文件的名称。所以,我们读取视频有两种方式,分别是从相机中读取视频和从文件中读取视频。
对于有摄像头的设备,例如带摄像头的笔记本电脑,我们可以直接调起电脑的摄像头,读取摄像头的视频流。
import cv2 as cv
cap = cv.VideoCapture(0) if not cap.isOpened(): print("Cannot open camera") exit() while True: # 逐帧捕获 ret, frame = cap.read() # 如果正确读取帧,ret为True if not ret: break # 显示结果帧 cv.imshow('frame', frame) if cv.waitKey(1) == ord('q'): break # 完成所有操作后,释放捕获器 cap.release()
cv.destroyAllWindows()
这里我向 VideoCapture 对象传入了参数 0,表示设备索引,设备索引就是指定哪个摄像头的数字。正常情况下,一个摄像头会被连接(就像我的情况一样)。所以我简单地传0。你可以通过传递1来选择第二个相机,以此类推。
cap.isOpened() 用来判断是否捕获到视频。
cap.read() 返回布尔值(True/ False)。如果正确读取了帧,它将为True。因此,你可以通过检查此返回值来检查视频的结尾。
cv.imshow 方法用来显示视频的帧。我们播放视频的原理就是逐帧播放。
在最后,不要忘记通过 cap.release() 释放俘虏。
运行这段代码,你就可以看到一个弹窗实时地播放你电脑摄像头中的图像了。
与从相机捕获相同,只是用视频文件名更改摄像机索引。
另外,在显示视频时,可以通过 cv.waitKey() 来控制视频播放的速度。如果设置太小,则视频将非常快,相当于倍速播放;而如果太大,则视频将变得很慢,相当于延迟播放。正常情况下25毫秒就可以了。
import cv2 as cv cap = cv.VideoCapture('video.mp4')
while cap.isOpened():
ret, frame = cap.read()
# 如果正确读取帧,ret为True if not ret: break cv.imshow('frame', frame) if cv.waitKey(1) == ord('q'): break cap.release()
cv.destroyAllWindows()
运行这段代码,你就可以看到一个弹窗播放你选择的视频文件了。
从相机读取视频,我们可以将视频保存到本地。我们捕捉一个视频,一帧一帧地处理,如果我们想要保存这个视频,非常简单,只需使用 cv.VideoWriter()。
cv.VideoWriter() 有5个参数:
关于 FourCC 与视频格式的对照关系,我列举了一些常见的格式:
cv2.VideoWriter_fourcc(‘P’,‘I’,‘M’,‘1’) = MPEG-1 codec cv2.VideoWriter_fourcc(‘M’,‘J’,‘P’,‘G’) = motion-jpeg codec --> mp4v cv2.VideoWriter_fourcc(‘M’, ‘P’, ‘4’, ‘2’) = MPEG-4.2 codec cv2.VideoWriter_fourcc(‘D’, ‘I’, ‘V’, ‘3’) = MPEG-4.3 codec cv2.VideoWriter_fourcc(‘D’, ‘I’, ‘V’, ‘X’) = MPEG-4 codec --> avi cv2.VideoWriter_fourcc(‘U’, ‘2’, ‘6’, ‘3’) = H263 codec cv2.VideoWriter_fourcc(‘I’, ‘2’, ‘6’, ‘3’) = H263I codec cv2.VideoWriter_fourcc(‘F’, ‘L’, ‘V’, ‘1’) = FLV1 codec
保存视频的代码:
import cv2 as cv
cap = cv.VideoCapture(0) # 定义编解码器并创建VideoWriter对象 fourcc = cv.VideoWriter_fourcc(*'MJPG') out = cv.VideoWriter('output.mp4', fourcc, 20.0, (640, 480)) while cap.isOpened():
ret, frame = cap.read() if not ret: break frame = cv.flip(frame, 1) # 写翻转的框架 out.write(frame)
cv.imshow('frame', frame) if cv.waitKey(1) == ord('q'): break # 完成工作后释放所有内容 cap.release() out.release()
cv.destroyAllWindows()
运行这段代码,你就可以在代码目录下找到一个 output.mp4 的视频文件了。
上面几段代码中,如果想要退出视频操作,敲击键盘的 q 就可以。
以上就是今天要介绍的内容了,使用 python-opencv 来操作视频还是比较简单的。当然,你也可以在读取或者保存视频时对视频进行一些处理,这个我们后续再发文介绍。
数据分析咨询请扫描二维码
若不方便扫码,搜微信号:CDAshujufenxi
箱线图(Box Plot)作为数据分布可视化的核心工具,能清晰呈现数据的中位数、四分位数、异常值等关键统计特征,广泛应用于数据分 ...
2026-01-28在回归分析、机器学习建模等数据分析场景中,多重共线性是高频数据问题——当多个自变量间存在较强的线性关联时,会导致模型系数 ...
2026-01-28数据分析的价值落地,离不开科学方法的支撑。六种核心分析方法——描述性分析、诊断性分析、预测性分析、规范性分析、对比分析、 ...
2026-01-28在机器学习与数据分析领域,特征是连接数据与模型的核心载体,而特征重要性分析则是挖掘数据价值、优化模型性能、赋能业务决策的 ...
2026-01-27关联分析是数据挖掘领域中挖掘数据间潜在关联关系的经典方法,广泛应用于零售购物篮分析、电商推荐、用户行为路径挖掘等场景。而 ...
2026-01-27数据分析的基础范式,是支撑数据工作从“零散操作”走向“标准化落地”的核心方法论框架,它定义了数据分析的核心逻辑、流程与目 ...
2026-01-27在数据分析、后端开发、业务运维等工作中,SQL语句是操作数据库的核心工具。面对复杂的表结构、多表关联逻辑及灵活的查询需求, ...
2026-01-26支持向量机(SVM)作为机器学习中经典的分类算法,凭借其在小样本、高维数据场景下的优异泛化能力,被广泛应用于图像识别、文本 ...
2026-01-26在数字化浪潮下,数据分析已成为企业决策的核心支撑,而CDA数据分析师作为标准化、专业化的数据人才代表,正逐步成为连接数据资 ...
2026-01-26数据分析的核心价值在于用数据驱动决策,而指标作为数据的“载体”,其选取的合理性直接决定分析结果的有效性。选对指标能精准定 ...
2026-01-23在MySQL查询编写中,我们习惯按“SELECT → FROM → WHERE → ORDER BY”的语法顺序组织语句,直觉上认为代码顺序即执行顺序。但 ...
2026-01-23数字化转型已从企业“可选项”升级为“必答题”,其核心本质是通过数据驱动业务重构、流程优化与模式创新,实现从传统运营向智能 ...
2026-01-23CDA持证人已遍布在世界范围各行各业,包括世界500强企业、顶尖科技独角兽、大型金融机构、国企事业单位、国家行政机关等等,“CDA数据分析师”人才队伍遵守着CDA职业道德准则,发挥着专业技能,已成为支撑科技发展的核心力量。 ...
2026-01-22在数字化时代,企业积累的海量数据如同散落的珍珠,而数据模型就是串联这些珍珠的线——它并非简单的数据集合,而是对现实业务场 ...
2026-01-22在数字化运营场景中,用户每一次点击、浏览、交互都构成了行为轨迹,这些轨迹交织成海量的用户行为路径。但并非所有路径都具备业 ...
2026-01-22在数字化时代,企业数据资产的价值持续攀升,数据安全已从“合规底线”升级为“生存红线”。企业数据安全管理方法论以“战略引领 ...
2026-01-22在SQL数据分析与业务查询中,日期数据是高频处理对象——订单创建时间、用户注册日期、数据统计周期等场景,都需对日期进行格式 ...
2026-01-21在实际业务数据分析中,单一数据表往往无法满足需求——用户信息存储在用户表、消费记录在订单表、商品详情在商品表,想要挖掘“ ...
2026-01-21在数字化转型浪潮中,企业数据已从“辅助资源”升级为“核心资产”,而高效的数据管理则是释放数据价值的前提。企业数据管理方法 ...
2026-01-21在数字化商业环境中,数据已成为企业优化运营、抢占市场、规避风险的核心资产。但商业数据分析绝非“堆砌数据、生成报表”的简单 ...
2026-01-20