视频利用python将文件夹下的视频按每一秒抽取一帧图像代码
时间: 2023-10-05 08:06:33 浏览: 224
要将文件夹下的多个视频按每一秒抽取一帧图像,你可以使用类似的代码,并对每个视频文件进行循环处理。以下是一个示例代码:
```python
import os
import cv2
def extract_frames_from_folder(folder_path, output_path):
# 获取文件夹下所有视频文件
video_files = [f for f in os.listdir(folder_path) if os.path.isfile(os.path.join(folder_path, f)) and f.endswith(('.mp4', '.avi', '.mkv'))]
for video_file in video_files:
video_path = os.path.join(folder_path, video_file)
output_folder = os.path.join(output_path, os.path.splitext(video_file)[0])
# 创建输出文件夹
os.makedirs(output_folder, exist_ok=True)
# 打开视频文件
video = cv2.VideoCapture(video_path)
fps = video.get(cv2.CAP_PROP_FPS) # 获取视频的帧率
frame_count = 0
success, frame = video.read()
while success:
# 计算当前帧的时间
current_time = video.get(cv2.CAP_PROP_POS_MSEC) / 1000.0
# 每一秒抽取一帧图像
if current_time >= frame_count:
output_file = os.path.join(output_folder, "frame_" + str(frame_count) + ".jpg")
cv2.imwrite(output_file, frame) # 保存图像到输出路径
frame_count += 1
success, frame = video.read()
video.release()
# 调用函数
folder_path = 'your_folder' # 视频文件夹路径
output_path = 'output_frames' # 输出路径
extract_frames_from_folder(folder_path, output_path)
```
你需要将 `your_folder` 替换为包含视频文件的文件夹路径,`output_frames` 替换为你想要保存抽取的帧图像的目录路径。该代码将遍历文件夹下的每个视频文件,从每个视频中每一秒抽取一帧图像,并将图像保存到与视频文件同名的子文件夹中。
阅读全文