opencv视频抽帧,从第一帧开始,每隔30帧抽一次,代码
时间: 2023-06-16 12:06:04 浏览: 76
可以使用OpenCV中的VideoCapture和VideoWriter类来实现视频的读取和写入,代码如下:
```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 = int(cap.get(cv2.CAP_PROP_FPS))
frame_count = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))
# 定义输出视频的格式和帧率
fourcc = cv2.VideoWriter_fourcc(*'mp4v')
out = cv2.VideoWriter('output.mp4', fourcc, fps, (width, height))
# 抽帧
count = 0
while cap.isOpened():
ret, frame = cap.read()
if not ret:
break
# 每隔30帧抽一次
if count % 30 == 0:
out.write(frame)
count += 1
cap.release()
out.release()
```
在代码中,首先打开视频文件并获取视频的一些基本信息,包括宽度、高度、帧率和总帧数等。然后定义输出视频的格式和帧率,并创建一个VideoWriter对象,用于将抽取的帧写入到输出视频中。
接着进入循环,每次读取一帧并判断是否读取成功,如果成功则判断当前帧是否需要抽取。如果需要,则将当前帧写入到输出视频中,并更新计数器。最后释放资源并关闭输出视频。