Python 视频切割并提取关键帧:每两秒保存一张图片
使用 Python 和 OpenCV 库,可以轻松地将一个文件夹下的所有视频以两秒为单位进行切割,并保存中间时间的帧作为图像。
以下是一个示例代码:
import cv2
import os
# 定义函数来切割视频并保存图像
def split_and_save_video(video_path, output_folder, time_interval):
# 读取视频文件
video = cv2.VideoCapture(video_path)
# 获取视频帧率
fps = video.get(cv2.CAP_PROP_FPS)
# 设置时间间隔(帧数)
frame_interval = int(fps * time_interval)
# 定义变量来计数保存的图像
count = 0
while True:
# 读取视频帧
ret, frame = video.read()
# 如果视频帧读取失败,则退出循环
if not ret:
break
# 如果计数能够被时间间隔整除,则保存图像
if count % frame_interval == 0:
# 构建图像保存路径
image_path = os.path.join(output_folder, f'image_{count}.jpg')
# 保存图像
cv2.imwrite(image_path, frame)
# 增加计数
count += 1
# 释放视频对象
video.release()
# 文件夹路径
folder_path = 'path/to/folder'
# 输出文件夹路径
output_folder = 'path/to/output/folder'
# 时间间隔(单位:秒)
time_interval = 2
# 遍历文件夹下所有的视频文件
for file in os.listdir(folder_path):
if file.endswith('.mp4'):
# 构建视频文件路径
video_path = os.path.join(folder_path, file)
# 切割视频并保存图像
split_and_save_video(video_path, output_folder, time_interval)
在使用上述代码时,需要将folder_path替换为包含视频文件的文件夹的路径,并将output_folder替换为图像保存的输出文件夹的路径。还需要根据需要将time_interval设置为所需的时间间隔(以秒为单位)。
请注意,上述代码假设视频文件的帧率是恒定的,并且使用的是.mp4文件格式。如果视频文件的帧率不是恒定的,或者使用其他文件格式,请相应地进行修改。
原文地址: https://www.cveoy.top/t/topic/psWI 著作权归作者所有。请勿转载和采集!