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' 键即可退出程序。

你可能感兴趣的:(opencv,笔记,音视频)