opencv从入门到放弃---视频方面的基本操作

视频文件的读写

opencv提供了VideoCapture类和VideoWriter类来支持各种格式的视频文件,支持的格式类型会因系统的不同而变化,但应该都支持AVI格式;在到达视频文件末尾之前,VideoCapture类可以通过read()函数来获取新帧,每一帧都是基于BGR格式的图像

代码示例:

import cv2

videocapture = cv2.VideoCapture('MyInputVid.avi')
fps = videocapture.get(cv2.CAP_PROP_FPS)  # 获取帧数
size = (int(videocapture.get(cv2.CAP_PROP_FRAME_WIDTH)), int(videocapture.get(CAP_PROP_FRAME_HEIGHT)))  # 获得帧大小
# 第一个参数表示指定的视频文件名,如果这个文件名对应的文件存在,会被覆盖
# 第二个参数表示指定的视频编解码器,编解码器的可用性根据系统的不同而不同
videowriter = cv2.VideoWriter('MyOutVid.avi', cv2.VideoWriter_fourcc('I','4','2','0'), fps, size)


# 返回两个参数,第一个是布尔类型,如果没有出错那么就返回True,否则返回False
# 第二个参数是读取文件返回的帧
success, frame = videocapture.read()
while success:
    videowriter.writer(frame)
    success, frame = videocapture.read()  # 读取下一帧

 

捕获摄像头的帧

VideoCapture类可以获得摄像头的帧流,但是对于摄像头而言,通常不是用视频的文件名来构造VideoCapture类,而是需要传递摄像头的设备索引

示例代码:

import cv2

videocapture = cv2.VideoCapture(0)
fps = 30
size = (int(videocapture.get(cv2.CAP_PROP_FRAME_WIDTH)), int(videocapture.get(CAP_PROP_FRAME_HEIGHT)))  # 获得帧大小
# 第一个参数表示指定的视频文件名,如果这个文件名对应的文件存在,会被覆盖
# 第二个参数表示指定的视频编解码器,编解码器的可用性根据系统的不同而不同
videowriter = cv2.VideoWriter('MyOutVid.avi', cv2.VideoWriter_fourcc('I','4','2','0'), fps, size)


# 返回两个参数,第一个是布尔类型,如果没有出错那么就返回True,否则返回False
# 第二个参数是读取文件返回的帧
success, frame = videocapture.read()
numFramesRemaining = 10 * fps - 1
while success and numFramesRemaining>0:
    videowriter.writer(frame)
    success, frame = videocapture.read()  # 读取下一帧
    numFramesRemaining -= 1
videocapture.release()

videocapture类的get()方法不能返回摄像头帧速率的准确值,他总是返回0

整理来自:opencv3计算机视觉   Python语言实现

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值