python cv2 视频
时间: 2023-10-03 08:08:28 浏览: 63
tools_python-master.7z
使用OpenCV库,可以很方便地读取、显示和处理视频。
首先需要安装OpenCV库,可以使用以下命令:
```
pip install opencv-python
```
接下来,可以使用以下代码读取视频文件并显示:
```python
import cv2
# 打开视频文件
cap = cv2.VideoCapture('video.mp4')
while True:
# 读取一帧
ret, frame = cap.read()
if not ret:
break
# 显示当前帧
cv2.imshow('Video', frame)
# 按下 q 键退出
if cv2.waitKey(1) == ord('q'):
break
# 释放资源
cap.release()
cv2.destroyAllWindows()
```
在上面的代码中,`cv2.VideoCapture` 函数打开视频文件并返回一个 `VideoCapture` 对象。`cap.read()` 方法读取一帧视频并返回一个布尔值和一个帧对象。如果视频结束,布尔值为 `False`,可以通过检查该值来判断循环是否结束。`cv2.imshow` 方法显示当前帧。`cv2.waitKey` 方法等待一个按键事件,如果按下的是 'q' 键,循环结束。最后,需要调用 `cap.release()` 方法释放资源,并调用 `cv2.destroyAllWindows()` 方法关闭所有窗口。
如果需要保存处理后的视频,可以使用以下代码:
```python
import cv2
# 打开视频文件
cap = cv2.VideoCapture('video.mp4')
# 获取视频的宽高和帧率
width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
fps = cap.get(cv2.CAP_PROP_FPS)
# 创建视频编码器
fourcc = cv2.VideoWriter_fourcc(*'mp4v')
out = cv2.VideoWriter('output.mp4', fourcc, fps, (width, height))
while True:
# 读取一帧
ret, frame = cap.read()
if not ret:
break
# 处理当前帧
# ...
# 把处理后的帧写入输出视频
out.write(frame)
# 显示当前帧
cv2.imshow('Video', frame)
# 按下 q 键退出
if cv2.waitKey(1) == ord('q'):
break
# 释放资源
cap.release()
out.release()
cv2.destroyAllWindows()
```
在上面的代码中,首先需要使用 `cap.get` 方法获取视频的宽高和帧率。然后,使用 `cv2.VideoWriter_fourcc` 函数创建一个视频编码器,可以将视频编码为指定格式的文件。在循环中,处理当前帧并使用 `out.write` 方法把处理后的帧写入输出视频。最后,需要调用 `out.release()` 方法释放输出视频资源。
阅读全文