在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()`:获取当前使用的视频捕获后端的名称。
这些函数提供了对视频流的基本操作和控制,使我们能够读取视频、访问视频的帧、获取和设置属性等。此外,还有其他一些函数可用于更高级的视频处理任务,例如跳转到指定帧、设置回调函数等。
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' 键即可退出程序。