OpenCV自学笔记二十一:视频处理

一、VideoCapture类

在OpenCV中,`VideoCapture`类提供了一系列函数来读取和控制视频流。以下是一些常用的`VideoCapture`类函数说明:

1. `isOpened()`:检查视频是否成功打开。返回一个布尔值,True表示成功打开,False表示未成功打开。

2. `open(filename or device)`:打开视频文件或设备(如摄像头)。参数可以是视频文件名,也可以是摄像头设备索引(通常为0)。函数返回一个布尔值,True表示成功打开,False表示未成功打开。

3. `read()`:逐帧读取视频。它返回一个布尔值(ret)和一个帧(frame)。ret表示是否成功读取到帧,frame是一个包含帧数据的numpy数组。

4. `release()`:释放`VideoCapture`对象所占用的资源。

5. `get(propId)`:获取视频流的属性值。propId是一个整数,表示具体的属性类型,例如宽度、高度、帧率等。函数返回属性值。

6. `set(propId, value)`:设置视频流的属性值。propId是一个整数,表示具体的属性类型,value是要设置的属性值。

7. `getBackendName()`:获取当前使用的视频捕获后端的名称。

这些函数提供了对视频流的基本操作和控制,使我们能够读取视频、访问视频的帧、获取和设置属性等。此外,还有其他一些函数可用于更高级的视频处理任务,例如跳转到指定帧、设置回调函数等。

二、VideoWrite类

1. VideoWriter类简介:

VideoWriter类用于创建和写入视频文件。

2. VideoWriter类的构造函数:

`cv2.VideoWriter(filename, fourcc, fps, frameSize[, isColor])`

- filename: 视频文件保存路径及名称。

- fourcc: 视频编码器的四字符代码,决定了视频的编码格式。例如`cv2.VideoWriter_fourcc('X','V','I','D')`表示使用XVID编码器。

- fps: 指定视频的帧率。

- frameSize: 视频帧的尺寸。

- isColor(可选参数): 是否为彩色视频,默认为True。

3. VideoWriter类的成员函数:

- `write(frame)`: 将一帧图像写入视频文件。

- `release()`: 释放资源,关闭视频文件。

下面是一个示例代码,演示如何使用VideoWriter类来保存视频文件:

​
import cv2

# 配置相关参数

filename = 'output.avi'

fourcc = cv2.VideoWriter_fourcc('X', 'V', 'I', 'D')

fps = 30.0

frameSize = (640, 480)

# 创建VideoWriter对象

out = cv2.VideoWriter(filename, fourcc, fps, frameSize)

# 打开摄像头

cap = cv2.VideoCapture(0)

while True:

# 读取当前帧

ret, frame = cap.read()

# 如果成功读取帧

if ret:

# 显示当前帧

cv2.imshow('Frame', frame)

# 写入视频文件

out.write(frame)

# 按下 'q' 键退出循环

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

break

else:

break

# 释放资源

cap.release()

out.release()

# 关闭窗口

cv2.destroyAllWindows()

​

以上示例代码会从摄像头获取视频帧,并实时显示在窗口中。同时,它会将每一帧写入名为`output.avi`的视频文件中。按下 'q' 键即可退出程序。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ironmao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值