将视频按时长平均分成指定数量的帧并保存在指定路径
创作时间:
作者:
@小白创作中心
将视频按时长平均分成指定数量的帧并保存在指定路径
引用
CSDN
1.
https://blog.csdn.net/m0_56512537/article/details/136953216
将视频按时长平均分成指定数量的帧并保存在指定路径
解决问题
我想将一个mp4格式的视频按视频播放顺序截取30张图片,也就是按视频时长平均截取30张图,并保存在指定文件夹内。接下来就以视频female-1-casual.mp4为例,输入路径和输出路径都是我自己设置的,如果需要使用代码,记得按自己的路径改。
代码实现
from moviepy.editor import VideoFileClip
import os
import cv2
from PIL import Image
# 视频文件路径
video_path = 'F:\\admin\\Downloads\\Nerf\\dataset\\people_snapshot_public\\female-1-casual\\female-1-casual.mp4'
# 输出文件夹路径
output_folder = 'F:\\admin\\Downloads\\Nerf\\dataset\\MyDataset\\llfftest\\images\\1'
# 确保输出文件夹存在
if not os.path.exists(output_folder):
os.makedirs(output_folder)
# 读取视频文件
clip = VideoFileClip(video_path)
# 获取视频时长(秒)
duration = clip.duration
# 计算每隔多少秒截取一帧
frame_interval = duration / 30
# 定义帧的数量
frame_number = 1
# 编号和保存截图
for frame in clip.iter_frames(fps=frame_interval):
# 检查帧是否是RGB格式
if frame.shape[-1] == 3:
# 如果是RGB格式,可以在这里进行进一步的处理或保存
pass
else:
# 如果不是RGB格式,可以将它转换为RGB格式
frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
# 保存截图
if frame_number > 30:
break
image_path = os.path.join(output_folder, f'{frame_number}.png')
# 将numpy.ndarray对象转换为PIL图像
image = Image.fromarray(frame)
# 最后,将图像保存到指定路径
image.save(image_path)
# frame_number迭代
frame_number += 1
print("截图已保存到:", output_folder)
实现效果
输入视频:
生成效果:
热门推荐
Excel双面打印装订线设置指南
双方交易原则:如何确保公平与透明的交易环境
红加黄是什么颜色?色彩调配秘诀,让您的设计更出色!
志愿者如何参与创业和创新项目,推动社会经济的发展和变革?
电容式传感器的应用
从业人员消防安全培训指南
新项目经理如何高效开会?十大实用指南
辽沈战役时南满独立二师的调出和北上,间接导致廖耀湘兵团的终局
MX450显卡评测:性能表现与适用场景全解析
风险提示:使用CF辅助可能面临的法律问题
行政检查与执法检查的区别
深度解析股票市场中的筹码分布:识别价值与风险的关键因素
极简主义生活方式:6个初学者技巧
哪些卦象最有利于提升官运?解读官运卦象的奥秘与应用
记录现代生活的印象派艺术
社区卫生服务中心如何守护居民健康?
面试后没回复?教你礼貌询问HR结果
入秋后,这组颜值翻倍的流行发色,你一定喜欢,既显白又高级
从多高处摔到水中会死掉?
跳水入水后怎样避免触底
业主的共用管道堵塞了谁的责任
如何使用八字排盘工具解锁你的命运密码
云南之旅:旅游清单与费用预算详细计算方法
参与式伦理规约:人工智能时代的风险挑战及其治理逻辑构建
销售必读:如何管理好客户?
选择好虾饲料,必须注意这五大成分!每一位虾农都要了解!
胃食管反流病临床管理
静电的产生原因
油漆前要清洁吗?别以为刷个油漆就搞定!
帝俊的多妻之谜