将视频按时长平均分成指定数量的帧并保存在指定路径
创作时间:
作者:
@小白创作中心
将视频按时长平均分成指定数量的帧并保存在指定路径
引用
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)
实现效果
输入视频:
生成效果:
热门推荐
余华英案最新进展:已进入死刑复核程序!
京津冀协同发展11年特别报道:携手共治,蓝天刷屏绿色成景
探索模块培训模式的优势与应用技巧
父母双亡未成年遗产怎么继承的
Excel中实现重叠效果的多种方法
如何选择合适的锯床?一文详解各类锯床的特点与选购要点
美国空军发布B-21隐形轰炸机的飞行照片 自首飞以来官方首次公布
父母双亡遗产继承的顺序是什么
成人肺炎疫苗接种建议:20价肺炎球菌疫苗
探寻平陆运河不一样的生态保护措施
日本医学专业排名前7的大学!
宇宙到底有多大?超乎我们的想象!
王允:从反对宦官专权到除掉董卓的历史传奇
成人疫苗接种是否需要提前咨询医生?
发烧期间,这些食物最适合孩子食用
别等找搭子的时候才后悔!请狠狠玩这15款超棒的合作游戏
秒懂!三角函数求导:带你揭秘 sin(x) 的变化规律
刮胡子最佳时间,三个时间段不宜刮胡子
植物开花的时间与什么有关?影响开花时间的因素有哪些?
U盘损坏,数据丢失怎么办?超强U盘修复攻略分享
重症监护室多少钱一天
悄悄的进村,打枪的不要:美国已经偷偷生产了超过5架B-21
Excel中选中控件的10种方法
解决U盘只读问题的好方法!
EMS能源管理系统:智能化能源管理解决方案
轻微脑中风和腔梗是一种病吗
“愤怒”的背后是什么?
杭州卓越工程师学员走进重庆大学“材料与化工”研究生联合培养基地交流学习
从天津站到眼科医院有多远?详细路线及交通方式
白凉粉吃多了有什么坏处