将视频按时长平均分成指定数量的帧并保存在指定路径
创作时间:
作者:
@小白创作中心
将视频按时长平均分成指定数量的帧并保存在指定路径
引用
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)
实现效果
输入视频:
生成效果:
热门推荐
INFP的童年成长经历解读
近代化学臼炮迫击炮和山炮、野炮榴弹炮战时的区别
年关将近,长辈又开启催婚模式,年轻人为何会恐婚,如何调整心态
借名买车引纠纷 法官调解促和解
健康的减肥早餐食谱
突破!高强度间歇训练显著提升2型糖尿病患者血管内皮功能
降血压、降尿酸,还防癌?芹菜汁是神话还是科学?用对身体这些部位会有变化!
三者险保费价格表全解析:不同额度与影响因素深度剖析
武则天时期,为何契丹盟军奚族在关键时刻倒戈,导致起义失败?
晚上运动完睡不着觉什么原因
购买电动车时的选择标准是什么?如何根据需求挑选合适的电动车?
详解6道正宗铁锅炖做法(含香料包和酱汁),每一道都有爆品潜质!
广西师范大学化学与药学学院:构建实践教学新体系 提升人才培养质量
定期检查汽车的这几个部位,驾驶可以更加安全,来自老司机的提醒
DC-DC变换器:优化设计与EMI控制的秘诀
广西单招考试报考条件、考试内容政策详解
达芬奇手术恢复指南:从术后护理到日常活动的全方位解析
小区保安薪酬管理制度详解:从基本工资到福利待遇
河豚毒素的危害与科学研究新视角
掌握艾宾浩斯记忆法的秘诀,让学习事半功倍!
一次按摩时间一般多少
口腔溃疡:不容忽视的口腔“小恶魔”
学会家庭版蛋糕做法后,我再没进过蛋糕店,无需烤箱,轻松制作!
变身特色酒店、设计中心、休闲园区……?上海123岁提篮桥监狱搬了,旧址何去何从
过年的“甜蜜”藏在这里
动态IP与静态IP的区别,你选对了吗?
上市公司资本运作——定增与配股
一年制水硕,年轻人就业抬高身价新路径
有时候呼吸的时候左胸口痛深呼吸更痛
利用堆结构高效解决TopK问题