本学习笔记详细记录了使用Python进行OpenCV库中视频处理的基础知识和实用技巧,包括视频读取、显示与保存等基础功能。
在OpenCV库中,Python程序员可以轻松地处理视频数据,包括捕获、播放和保存视频。下面我们将深入探讨这些知识点。
1. **使用摄像头捕获视频**
在OpenCV中,我们利用`cv2.VideoCapture()`函数来访问并从摄像头获取视频流。如果输入参数为0,则表示程序将使用计算机的默认摄像头;若输入其他整数如1,则选择其他的视频源设备。为了确认摄像头已成功初始化,可以调用`cap.isOpened()`方法检查返回值是否为True(代表摄像头已经打开)。通过`cap.get(propId)`函数获取有关视频的各种属性信息,其中propId范围从0到18,每一个数值对应不同的属性设置。例如,使用3和4分别表示帧宽度与高度的查询。此外,还可以利用`cap.set(propId, value)`方法修改这些属性值。
2. **播放来自文件的视频**
要从一个视频文件中读取并显示视频内容,请在调用`cv2.VideoCapture()`时传入该文件路径而非设备索引号。在此过程中,我们使用`cap.read()`函数逐帧获取图像,并进行必要的处理(例如转换为灰度图)。为了连续播放这些帧,可以采用`cv2.waitKey()`函数暂停程序执行一段时间(毫秒),通常设置为每秒钟30次左右以匹配视频的平均帧率。当用户按下q键时,循环结束并退出程序。
```python
cap = cv2.VideoCapture(test_video.mp4)
while True:
ret, frame = cap.read()
if not ret:
break # 如果读取失败则跳出循环
gray_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
cv2.imshow(Frame, gray_frame) # 显示当前帧
if cv2.waitKey(30) & 0xFF == ord(q):
break # 按下 q 键退出循环
```
3. **保存视频**
若要将处理后的视频保存下来,需要创建一个`cv2.VideoWriter`对象。首先指定输出文件名以及编码器(如XVID),同时定义帧率和尺寸大小等信息。例如:
```python
fourcc = cv2.VideoWriter_fourcc(*XVID) # 使用 XVID 编码方式
out = cv2.VideoWriter(output.avi, fourcc, 20.0, (640, 480))
```
在处理每一帧后,使用`out.write(frame)`将其写入输出文件。最后别忘记释放资源:
```python
cap.release()
out.release()
cv2.destroyAllWindows()
```
不同操作系统中可用的FourCC编码可能有所不同,在Fedora系统上常见的有DIVX、XVID等;而在Windows环境下可能会遇到兼容性问题,此时可以使用`cv2.cv.CV_FOURCC()`替代。
OpenCV-python库提供了强大的视频处理能力,包括从摄像头捕获数据、播放文件中的视频以及保存经过修改的视频内容。这些功能使得开发者能够进行实时视频分析和存储操作,在计算机视觉与机器学习项目中有着广泛的应用价值。