python一帧一帧读取视频_python ffmpeg任意提取视频帧的方法
时间: 2023-09-07 22:13:29 浏览: 231
在 Python 中,可以使用 OpenCV 库来读取视频帧,也可以使用 ffmpeg 库来提取视频帧。下面分别介绍这两种方法。
使用 OpenCV 库读取视频帧:
```python
import cv2
# 打开视频文件
cap = cv2.VideoCapture('test.mp4')
# 循环读取视频帧
while cap.isOpened():
ret, frame = cap.read()
if ret:
# 显示当前帧
cv2.imshow('frame', frame)
# 按下 q 键退出循环
if cv2.waitKey(25) & 0xFF == ord('q'):
break
else:
break
# 释放资源
cap.release()
cv2.destroyAllWindows()
```
使用 ffmpeg 库提取视频帧:
```python
import subprocess
# 视频文件路径
video_file = 'test.mp4'
# 帧率(每秒钟读取多少帧)
fps = 25
# 输出目录
output_dir = 'frames'
# 使用 ffmpeg 提取视频帧
subprocess.call(['ffmpeg', '-i', video_file, '-vf', 'fps='+str(fps), output_dir+'/frame-%03d.jpg'])
```
其中,`-i` 参数指定输入视频文件路径,`-vf` 参数指定视频过滤器,这里用 `fps` 指定帧率,从而每秒钟读取指定数量的帧。`output_dir` 是输出目录,`frame-%03d.jpg` 则是输出文件名的格式,表示输出的文件名为 `frame-001.jpg`、`frame-002.jpg`、`frame-003.jpg` 等。
阅读全文