pyrhon将文件夹下的视频按每1秒钟进行抽帧,并将抽帧图片以视频名字进行命名
时间: 2024-04-13 14:29:48 浏览: 23
你可以使用OpenCV库来实现将文件夹下的视频按每1秒钟进行抽帧,并将抽帧图片以视频名字进行命名。以下是一个示例代码:
```python
import os
import cv2
def extract_frames(video_path, output_dir):
# 获取视频文件名
video_name = os.path.splitext(os.path.basename(video_path))[0]
# 创建保存抽帧图片的文件夹
frames_dir = os.path.join(output_dir, video_name)
if not os.path.exists(frames_dir):
os.makedirs(frames_dir)
# 打开视频文件
video = cv2.VideoCapture(video_path)
# 获取视频的帧率
fps = video.get(cv2.CAP_PROP_FPS)
# 计算抽帧的间隔帧数
frame_interval = int(fps) # 每秒钟抽一帧
# 记录当前帧数和时间
frame_count = 0
time_count = 0
while True:
success, frame = video.read()
if not success:
break
# 计算当前帧的时间(秒)
current_time = frame_count / fps
# 如果达到了抽帧时间点
if current_time >= time_count:
# 保存抽帧图片
frame_path = os.path.join(frames_dir, f"{video_name}_{frame_count}.jpg")
cv2.imwrite(frame_path, frame)
# 更新抽帧时间点
time_count += 1
frame_count += 1
# 关闭视频文件
video.release()
# 视频文件夹路径
videos_dir = 'path/to/your/videos/'
# 抽帧图片保存的文件夹路径
output_dir = 'path/to/save/frames/'
# 遍历视频文件夹下的所有视频文件
for filename in os.listdir(videos_dir):
if filename.endswith('.mp4'):
video_path = os.path.join(videos_dir, filename)
extract_frames(video_path, output_dir)
```
请将 `videos_dir` 替换为你实际的视频文件夹路径,将 `output_dir` 替换为你希望保存抽帧图片的文件夹路径。这段代码会遍历视频文件夹下的所有视频文件,对每个视频进行抽帧操作,并将抽帧图片保存在以视频名字命名的文件夹中。抽帧的间隔是每秒钟抽一帧。