【代码---利用一个小程序,读取文件夹中图片,将其合成为一个视频】
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 前言
- 程序
- 详细说明
- 总结
前言
提示:这里可以添加本文要记录的大概内容:
创建一个程序将图像合成为视频通常需要使用图像处理和视频编码库。
下面是一个使用Python的例子,其中使用OpenCV来处理图像和生成视频:
提示:以下是本篇文章正文内容,下面案例可供参考
程序
import cv2
import osdef images_to_video(image_folder, video_name, fps=30):images = [img for img in os.listdir(image_folder) if img.endswith(".png")]frame = cv2.imread(os.path.join(image_folder, images[0]))height, width, layers = frame.shapevideo = cv2.VideoWriter(video_name, cv2.VideoWriter_fourcc(*'mp4v'), fps, (width,height))for image in images:video.write(cv2.imread(os.path.join(image_folder, image)))cv2.destroyAllWindows()video.release()if __name__ == "__main__":image_folder = "path/to/your/image/folder"video_name = "output_video.mp4"images_to_video(image_folder, video_name)
详细说明
images = [img for img in os.listdir(image_folder) if img.endswith(".png")]
这行代码是一个列表推导式,用于从指定文件夹中选择以 “.png” 结尾的文件。让我逐步解释它:
os.listdir(image_folder): os.listdir 函数返回指定目录中的文件和文件夹的列表。
for img in os.listdir(image_folder): 这部分是一个 for 循环,遍历指定目录中的每个文件和文件夹。
if img.endswith(“.png”): 这是一个条件语句,用于检查当前文件是否以 “.png” 结尾。如果是,就将它包含在最终列表中。
images = […]: 这将满足条件的文件列表存储在名为 images 的变量中。
因此,整个行的作用是创建一个名为 images 的列表,其中包含指定文件夹中以 “.png” 结尾的所有文件的名称。这个列表将用于后续的图像处理和视频生成步骤。
frame = cv2.imread(os.path.join(image_folder, images[0]))
这行代码使用 OpenCV 的 cv2.imread 函数读取第一张图像,并将其存储在变量 frame 中。让我解释一下:
os.path.join(image_folder, images[0]): 这部分使用 os.path.join 将图像文件夹路径和第一个图像文件的名称连接起来,形成完整的文件路径。images[0] 是 images 列表中的第一个图像文件的名称。
cv2.imread(…): 这是 OpenCV 库中的函数,用于读取图像文件。它接受图像文件的完整路径作为参数,并返回一个表示图像的多维数组(通常是 NumPy 数组)。
frame = …: 将读取的图像存储在名为 frame 的变量中,以便后续用于视频生成。
因此,这行代码的作用是读取第一张图像并将其存储在 frame 变量中,以便在后续步骤中将其添加到视频中。
height, width, layers = frame.shape
这行代码使用 OpenCV 中的 shape 属性获取图像的高度、宽度和通道数。让我解释一下:
frame: 这是之前通过 cv2.imread 读取的图像,存储在变量 frame 中。
frame.shape: shape 属性返回一个包含三个值的元组,分别表示图像的高度、宽度和通道数。
height, width, layers = frame.shape: 将元组中的三个值分别赋给变量 height、width 和 layers。
这行代码的目的是获取读取的图像的尺寸信息,以便在后续步骤中创建视频写入对象时使用。这些尺寸信息用于设置视频的分辨率。
video = cv2.VideoWriter(video_name, cv2.VideoWriter_fourcc(*'mp4v'),fps, (width,height))
这行代码创建了一个用于写入视频的 cv2.VideoWriter 对象。让我逐步解释:
video_name: 这是要保存的输出视频文件的名称。在代码中,它被设置为之前指定的 video_name。
cv2.VideoWriter_fourcc(*‘mp4v’): 这是视频编解码器的四字符代码。‘mp4v’ 表示使用 MP4 编码格式。cv2.VideoWriter_fourcc 将四字符代码作为参数,通过 *‘mp4v’ 的语法将字符串拆分为单个字符,并传递给函数。
fps: 这是视频的帧率,即每秒显示的图像数。在代码中,它被设置为之前指定的 fps。
(width, height): 这是视频的分辨率,即每一帧图像的宽度和高度。在代码中,它被设置为之前从图像中获取的 width 和 height。
整体而言,这行代码创建了一个 cv2.VideoWriter 对象,用于将图像合成为视频。视频的编码格式为 MP4,帧率为 fps,分辨率为 (width, height)。这个对象将在后续步骤中用于将图像写入视频。
for image in images:
video.write(cv2.imread(os.path.join(image_folder, image)))
这部分代码使用 cv2.imread 读取每张图像,然后通过 video.write 将每张图像写入先前创建的视频文件。让我逐步解释:
for image in images:: 这是一个 for 循环,遍历 images 列表中的每个图像文件。
os.path.join(image_folder, image): 使用 os.path.join 将图像文件夹路径和当前图像文件的名称连接起来,形成完整的文件路径。
cv2.imread(…): 这是 OpenCV 中的函数,用于读取当前图像文件。
video.write(…): 这是 cv2.VideoWriter 对象的方法,用于将读取的图像写入视频。每次迭代都将当前图像写入视频。
这个循环遍历所有图像文件,将它们一个接一个地写入视频。整个视频生成的过程通过不断地读取图像并将其写入视频来完成。最后,通过 cv2.destroyAllWindows() 关闭图像窗口,并通过 video.release() 释放视频写入对象。这样就完成了图像合成为视频的过程。
总结
以上就是一个读取文件夹中图片,将其合成为一个视频的小程序!!!
相关文章:
【代码---利用一个小程序,读取文件夹中图片,将其合成为一个视频】
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言程序详细说明总结 前言 提示:这里可以添加本文要记录的大概内容: 创建一个程序将图像合成为视频通常需要使用图像处理和视频编码库。 …...
MVC 和 MVVM的区别
MVC: M(model数据)、V(view视图),C(controlle控制器) 缺点是前后端无法独立开发,必须等后端接口做好了才可以往下走; 前端没有自己的数据中心,太…...

redis—Set集合
目录 前言 1.常见命令 2.使用场景 前言 集合类型也是保存多个字符串类型的元素的,但和列表类型不同的是,集合中1)元素之间是无序的2)元素不允许重复,如图2-24所示。一个集合中最多可以存储22 - 1个元素。Redis 除了支持集合内的增删查改操…...

【jetson笔记】vscode远程调试
vscode安装插件 vscode安装远程插件Remote-SSH 安装完毕点击左侧远程资源管理器 打开SSH配置文件 添加如下内容,Hostname为jetson IP,User为登录用户名需替换为自己的 Host aliasHostName 192.168.219.57User jetson配置好点击连接,控制台输…...
大数据处理流程包括哪些环节
大数据处理流程作为当今信息时代的关键技术之一,已经成为各个行业的必备工具。这个流程涵盖了从数据收集、存储、处理、分析到应用的各个环节,确保了数据的有效利用和价值的最大化。 一、数据收集 随着物联网、移动互联网、社交媒体等领域的快速发展&a…...

C++入门篇章1(C++是如何解决C语言不能解决的问题的)
目录 1.C关键字(以C98为例)2.命名空间2.1 命名空间定义2.2命名空间使用 3.C输入&输出4.缺省参数4.1缺省参数概念4.2 缺省参数分类 5. 函数重载5.1函数重载概念5.2 C支持函数重载的原理--名字修饰(name Mangling) 1.C关键字(以C98为例) C总计63个关键字,C语言32…...

java复习篇 数据结构:链表第一节
目录 单向链表 初始 头插 思路 情况一 情况二 代码 尾插 思路 遍历 优化遍历 遍历验证头插 尾插代码 优化 尾插测试 get 思路 代码 测试 insert 思路 代码 优化 测试 remove 移除头结点 提问 移除指定位置 测试 单向链表 每个元素只知道自己的下一个…...
深入理解与运用Lombok的@Cleanup注解:自动化资源管理利器
前言 在Java编程中,正确地管理和释放诸如文件流、数据库连接等资源至关重要。若处理不当,可能会引发内存泄漏或系统资源耗尽等问题。为此,Lombok库提供了一个名为Cleanup的便捷注解,它允许我们以简洁且安全的方式自动关闭实现了j…...

【LeetCode每日一题】2865. 美丽塔 I
2024-1-24 文章目录 [2865. 美丽塔 I](https://leetcode.cn/problems/beautiful-towers-i/) 2865. 美丽塔 I 初始化变量 ans 为0,用于记录最大的和值。获取整数列表的长度,保存到变量 n 中。使用一个循环遍历列表中的每个位置,从0到n-1。在循…...

Cute Http File Server 使用文章
下载 官网:http://iscute.cn/chfs 蓝奏下载:https://wwts.lanpw.com/iKP1i1m9572h 开源:https://github.com/docblue/chfsgui 介绍 Cute Http File Server 是国内免费开源的局域网传输服务器软件。 可以不用借助QQ、某信软件传输文件&am…...

c#算法(10)——求点到直线的距离
前言 在上位机软件开发领域,特别是机器视觉领域,经常会遇到尺寸测量的场景,比如让我们求一个点到一条直线的距离,我们已知了直线上的两个点的坐标,然后又已知了直线外的一个点的坐标,那么如何求出该直线外的一点到直线的距离呢?本文就是来讲解如何求点到直线的距离的,…...
[小脚本] maya 命令行常用操作
其实这些代码大部分是从 chatgpt 中生成的。 骨骼命名 import maya.cmds as cmdsdef rename_bones():selected_bones cmds.ls(type"joint") # 获取选中的骨骼for bone in selected_bones:if "_" in bone:new_name bone.split("_")[0] # 获…...

数据结构·单链表
不可否认的是,前几节我们讲解的顺序表存在一下几点问题: 1. 中间、头部的插入和删除,需要移动一整串数据,时间复杂度O(N) 2. 增容需要申请新空间,拷贝数据,释放旧空间。会有不小的消耗 3. 增容一般是2倍的增…...

Redis(秒杀活动、持久化之RDB、AOF)
目录 秒杀活动 一、测压工具jmete的使用 二、java实现秒杀活动 1、myseckillcontroller 2、先启动pos请求添加商品,再启动jmeter进行压测 Redis持久化 一 、Redis持久化之RDB 1.RDB是什么 2. 备份是如何执行的 3.Fork 4. RDB持久化流程 5. dump.rdb文件 6…...

Window安装Python和开发Pycharm
准备: 1:安装Python环境 https://www.python.org/downloads/windows/ 2: 下载Pycharm https://www.jetbrains.com/pycharm/download/other.html...

技术驱动宠物健康:宠物在线问诊系统的高效搭建手册
在数字化时代,技术正在催生出许多创新的医疗服务,而宠物在线问诊系统便是其中一项引领潮流的创举。本文将为你提供一份高效搭建宠物在线问诊系统的手册,通过技术代码示例,让你轻松打造一套技术驱动的宠物健康管理系统。 1. 架构…...
玩转k8s:yaml介绍
一.Yaml文件详解 1.Yaml文件格式 (1)Kubernetes 支持 YAML 和 JSON 格式管理资源对象 (2)JSON 格式:主要用于 api 接口之间消息的传递 (3)YAML 格式:用于配置和管理,…...
【spdk】spdk compressdev测试
spdk-23.09\go\rpc\README.md go client 启应用 启哪个应用? ./build/bin/iscsi_tgt --wait-for-rpc & /usr/local/daos-2.4/prereq/release/spdk/share/spdk/scripts/rpc.py bdev_malloc_create -b Malloc0 1024 4096 #1G bs4k /usr/local/daos-2.4/prereq…...

Linux中并发程序设计(进程的创建和回收、exec函数使用)
进程的创建和回收 进程概念 概念 程序 存放在磁盘上的指令和数据的有序集合(文件) 静态的 进程 执行一个程序所分配的资源的总称 动态的进程和程序比较 注:进程是存在RAM中,程序是存放在ROM(flash)中的进程内容 BSS段ÿ…...

2023年DevOps国际峰会暨 BizDevOps 企业峰会(DOIS北京站):核心内容与学习收获(附大会核心PPT下载)
随着科技的飞速发展,软件开发的模式和流程也在不断地演变。在众多软件开发方法中,DevOps已成为当下热门的软件开发运维一体化模式。特别是在中国,随着越来越多的企业开始认识到DevOps的价值,这一领域的研究与实践活动日益活跃。本…...

微信小程序之bind和catch
这两个呢,都是绑定事件用的,具体使用有些小区别。 官方文档: 事件冒泡处理不同 bind:绑定的事件会向上冒泡,即触发当前组件的事件后,还会继续触发父组件的相同事件。例如,有一个子视图绑定了b…...

边缘计算医疗风险自查APP开发方案
核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...
Go 语言接口详解
Go 语言接口详解 核心概念 接口定义 在 Go 语言中,接口是一种抽象类型,它定义了一组方法的集合: // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的: // 矩形结构体…...

基于Docker Compose部署Java微服务项目
一. 创建根项目 根项目(父项目)主要用于依赖管理 一些需要注意的点: 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件,否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...
C++.OpenGL (10/64)基础光照(Basic Lighting)
基础光照(Basic Lighting) 冯氏光照模型(Phong Lighting Model) #mermaid-svg-GLdskXwWINxNGHso {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-GLdskXwWINxNGHso .error-icon{fill:#552222;}#mermaid-svg-GLd…...

AI+无人机如何守护濒危物种?YOLOv8实现95%精准识别
【导读】 野生动物监测在理解和保护生态系统中发挥着至关重要的作用。然而,传统的野生动物观察方法往往耗时耗力、成本高昂且范围有限。无人机的出现为野生动物监测提供了有前景的替代方案,能够实现大范围覆盖并远程采集数据。尽管具备这些优势…...

零知开源——STM32F103RBT6驱动 ICM20948 九轴传感器及 vofa + 上位机可视化教程
STM32F1 本教程使用零知标准板(STM32F103RBT6)通过I2C驱动ICM20948九轴传感器,实现姿态解算,并通过串口将数据实时发送至VOFA上位机进行3D可视化。代码基于开源库修改优化,适合嵌入式及物联网开发者。在基础驱动上新增…...
6个月Python学习计划 Day 16 - 面向对象编程(OOP)基础
第三周 Day 3 🎯 今日目标 理解类(class)和对象(object)的关系学会定义类的属性、方法和构造函数(init)掌握对象的创建与使用初识封装、继承和多态的基本概念(预告) &a…...
DiscuzX3.5发帖json api
参考文章:PHP实现独立Discuz站外发帖(直连操作数据库)_discuz 发帖api-CSDN博客 简单改造了一下,适配我自己的需求 有一个站点存在多个采集站,我想通过主站拿标题,采集站拿内容 使用到的sql如下 CREATE TABLE pre_forum_post_…...

Kubernetes 节点自动伸缩(Cluster Autoscaler)原理与实践
在 Kubernetes 集群中,如何在保障应用高可用的同时有效地管理资源,一直是运维人员和开发者关注的重点。随着微服务架构的普及,集群内各个服务的负载波动日趋明显,传统的手动扩缩容方式已无法满足实时性和弹性需求。 Cluster Auto…...