视频转换成图像的脚本

news/2024/10/22 23:58:04/

视频转换成图像的脚本

from moviepy.editor import VideoFileClip
import os# 视频文件路径
video_file = '2024_10_21_16_06_IMG_2357.MOV'
# 输出文件夹路径
output_folder = 'output_images'
# 每秒转换的帧率
fps = 2# 从视频文件名中提取基本名称
base_filename = os.path.splitext(os.path.basename(video_file))[0]# 确保输出文件夹存在
if not os.path.exists(output_folder):os.makedirs(output_folder)# 加载视频文件
clip = VideoFileClip(video_file)# 计算视频的总帧数
total_frames = int(clip.duration * fps)# 遍历每一帧,并将其保存为图像
for i in range(total_frames):# 计算当前帧的时间戳timestamp = i / fps# 生成图像的文件名image_filename = f"{output_folder}/{base_filename}_frame_{i:05d}.png"# 保存当前帧为图像clip.save_frame(image_filename, t=timestamp)print(f"Saved {image_filename}")# 释放视频文件资源
clip.close()
print("视频转换完成。")

使用moviepy库来将视频文件2024_10_21_14_45_IMG_1672.MOV转换成300张图像。脚本还会创建一个与视频文件名前缀相同的文件夹来存储这些图像。确保已经安装了moviepy库,如果没有安装,可以通过pip install moviepy来安装

from moviepy.editor import VideoFileClip
import os# 视频文件名
video_filename = '2024_10_21_14_45_IMG_1672.MOV'# 提取视频文件的前缀作为文件夹名
folder_name = video_filename.split('.')[0]# 确保文件夹存在,如果不存在则创建
if not os.path.exists(folder_name):os.makedirs(folder_name)# 加载视频
clip = VideoFileClip(video_filename)# 计算每张图像的时间间隔
duration = clip.duration
interval = duration / 300# 逐帧提取图像
for i in range(300):# 计算当前帧的时间time = i * interval# 保存图像frame = clip.get_frame(time)image_filename = f'{folder_name}/{folder_name}_frame_{i:03d}.png'clip.save_frame(image_filename, t=time)# 输出文件夹名字
print(f'图像已保存到文件夹:{folder_name}')# 释放资源
clip.close()

-i https://pypi.tuna.tsinghua.edu.cn/simple/
import cv2
import os# 视频文件路径
video_file = '2024_10_21_14_45_IMG_1672.MOV'# 获取视频文件名和创建输出文件夹
video_name = os.path.basename(video_file)
folder_name = video_name.split('.')[0]
if not os.path.exists(folder_name):os.makedirs(folder_name)# 打开视频文件
cap = cv2.VideoCapture(video_file)# 获取视频的总帧数
total_frames = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))# 计算跳过多少帧来获取300张图像
frame_step = max(1, total_frames // 60)# 初始化帧计数器
frame_count = 0# 遍历视频帧
while True:ret, frame = cap.read()if not ret:break# 每隔frame_step帧保存一张图像if frame_count % frame_step == 0:# 构建输出文件名image_name = f'{folder_name}/{frame_count:06d}.jpg'# 保存图像cv2.imwrite(image_name, frame)frame_count += 1# 释放视频捕获对象
cap.release()# 输出文件夹名字
print(f'Images have been saved to the folder: {folder_name}')


http://www.ppmy.cn/news/1541185.html

相关文章

大数据新视界 -- 大数据大厂之 AI 驱动的大数据分析:智能决策的新引擎

💖💖💖亲爱的朋友们,热烈欢迎你们来到 青云交的博客!能与你们在此邂逅,我满心欢喜,深感无比荣幸。在这个瞬息万变的时代,我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

C++详解

C详解 文章目录 C详解1 内存分区模型1.1 程序运行前1.2 程序运行后1.3 new操作符 2 引用2.1 引用的基本使用2.2 引用注意事项2.3 引用做函数参数2.4 引用做函数返回值2.5 引用的本质2.6 常量引用 3 函数提高3.1 函数默认参数3.2 函数占位参数3.3 函数重载3.3.1 函数重载概述3.3…

Java程序设计:spring boot(7)——数据访问操作

目录 1 查询操作 1.1 接口方法定义 1.2 映射文件配置 1.3 UserService 1.4 UserController 2 添加操作 2.1 接口方式定义 2.2 映射文件配置 2.3 添加 commons-lang3 依赖 2.4 AssertUtil ⼯具类 2.5 ParamsException ⾃定义异常 2.6 UserService 2.7 ResultInfo …

无人机初识及应用概览

随着科技的飞速发展,无人机作为一种新兴技术产品,逐渐走进了我们的日常生活和学习中。以下是对该文内容的全面总结,旨在帮助读者更好地理解和认识无人机的基本概念、分类、应用领域、国产标杆品牌以及四旋翼无人机的具体组成。 一、无人机的概…

LLM----BERT+HuggingFace理论及基础入门实战

一、BERT基础知识 1.1bert是什么 传统的表征模型:Word2Vec 1.基本原理 Word2Vec通过分析大规模文本数据生成单词嵌入(word embeddings),捕捉单词之间的语义关系。其基本思想是,如果两个单词在许多上下文中出现得很相…

程序设计基础I-单元测试4(机测+编程题)

7-1 逆置一维数组 编写程序,以指针的方式,就地逆置一维数组。 输入格式: 首先输入一个正整数T,表示测试数据的组数,然后是T组测试数据。每组测试数据先输入数据个数n,然后输入n个整数。 输出格式: 对于每组测试&a…

LeetCode377:组合总和IV

题目链接&#xff1a;377. 组合总和 Ⅳ - 力扣&#xff08;LeetCode&#xff09; 代码如下 class Solution { public:int combinationSum4(vector<int>& nums, int target) {vector<int> dp(target 1, 0);dp[0] 1;for(int i 0; i < target; i){for(int…

【每日刷题】Day141

【每日刷题】Day141 &#x1f955;个人主页&#xff1a;开敲&#x1f349; &#x1f525;所属专栏&#xff1a;每日刷题&#x1f34d; &#x1f33c;文章目录&#x1f33c; 1. 36. 有效的数独 - 力扣&#xff08;LeetCode&#xff09; 2. 37. 解数独 - 力扣&#xff08;LeetC…