水安建设集团网站,wordpress 更改目录,手机网站怎么搭建,小红书网站开发形式选择舔狗日记1前言一、需要调入的模块二、实现合并多张图片转成 mp4 视频三、优化改进一下总结前言
这不是学姐生日快到了#xff0c;于是我学了一手使用Python来把学姐的照片生成为视频#xff0c;到时候给她一个惊喜#xff01; 好了先不舔了#xff0c;下面分享一下用pytho…
舔狗日记1前言一、需要调入的模块二、实现合并多张图片转成 mp4 视频三、优化改进一下总结前言
这不是学姐生日快到了于是我学了一手使用Python来把学姐的照片生成为视频到时候给她一个惊喜 好了先不舔了下面分享一下用python代码实现多张图片合成MP4视频为实例做下详细代码讲解。
一、需要调入的模块
1、imageio模块
Python模块imageio是一个用于读取和写入图像及视频数据的库。它支持多种格式并且可以使用NumPy数组进行操作。
以下是一些关键的函数
imageio.imread()从文件中读取图像数据并返回一个NumPy数组。imageio.imwrite()将一个NumPy数组写入到文件。imageio.mimsave()将多个图像帧组成的列表保存为动画文件例如GIF。imageio.get_reader()获取一个对象该对象用于逐帧读取给定文件中的动画图像。imageio.get_writer()获取一个对象该对象用于逐帧写入动画图像到指定文件中。
使用这些函数可以方便地读取、写入和处理各种图像及视频数据格式。
2、Image 模块
PIL 是 Python 中常用的图像处理库Image 模块是其中的一个重要模块它提供了各种图像操作和处理的函数。
以下是 Image 模块中一些主要函数及其作用
open(): 打开并返回指定文件路径的图像对象。fromarray(): 将 numpy 数组或 PIL 图像对象转换为 PIL 图像对象。new(): 创建一个新的指定大小、模式和颜色的空白图像对象。save(): 将图像保存为指定格式的文件。resize(): 修改图像的大小。crop(): 裁剪图像的指定区域。rotate(): 旋转图像指定角度。show(): 显示图像。
除此之外还有很多其他常用的函数例如调整亮度和对比度、应用滤镜等等。这些函数可以帮助我们实现各种复杂的图像处理任务并且通常也会有一些参数可用于进一步调节函数的行为具体使用时可以参考相关文档。 二、实现合并多张图片转成 mp4 视频
使用 Python 中的画图库 PILPython Imaging Library或者 OpenCV 读取每一张图片。
使用第三方库 imageio 将多张图片合并成一个视频文件。
配置生成视频文件的视频帧数、视频尺寸和视频播放速度等参数。
以下是一个简单的示例代码:
import os
import imageio
from PIL import Image# 设置生成的视频文件名和路径
filename output.mp4
filepath os.path.join(os.getcwd(), filename)# 读取所有 PNG 图片
images []
for file_name in sorted(os.listdir()):if file_name.endswith(.png):images.append(Image.open(file_name))# 将图片转换为视频
fps 30 # 每秒钟30帧
with imageio.get_writer(filepath, fpsfps) as video:for image in images:frame image.convert(RGB)video.append_data(frame)实现原理读取所有需要合并的图片文件将它们存储到一个列表中。然后使用 imageio 库的 get_writer() 函数创建一个视频写入器对象并设置视频的播放速度fps。之后在循环过程中读取列表中的每一张图片在将其转换为带有 RGB 颜色模式的格式后添加到视频帧中。最终输出一个合并了所有目标图片的视频文件。
三、优化改进一下
将程序并行化进行处理加快处理多张图片的速度。注以下方法可能并非最优方法
import os
import concurrent.futures
import imageio
from PIL import Image# 设置生成的视频文件名和路径
filename output.mp4
filepath os.path.join(os.getcwd(), filename)def process_image(file_name):if file_name.endswith(.png):image Image.open(file_name)return image.convert(RGB)with concurrent.futures.ThreadPoolExecutor() as executor:# 寻找所有 png 文件image_files [file for file in os.listdir() if file.endswith(.png)]# 利用线程池并行处理图像images list(executor.map(process_image, image_files))# 将图片转换为视频文件
fps 30 # 每秒钟30帧
with imageio.get_writer(filepath, fpsfps) as video:for image in images:video.append_data(image)这里使用 concurrent.futures 库中的 ThreadPoolExecutor 对象进行并行处理。首先在主线程中寻找读取当前工作目录下的所有需要合并的 PNG 图片创建任务列表。然后将任务提交给线程池中并保证能够快速、异步地处理目标文件。在处理完所有 PNG 图片之后将其存储到一个 images 中的列表中并最后转换成视频。 对于刚学习Python或者正在学习Python的小伙伴我准备了2023最新的Python学习资料直接在文章最后的名片自取哦包括学习遇到的问题都可以问的。 总结
以上就是今天要讲的内容本文仅仅简单介绍了python代码实现图片转成视频的使用而imageio中提供了大量能使我们快速便捷地处理数据的函数和方法。
注意由于 GIL 的存在Python 的多线程并不总能带来真正的性能提升。如果性能是关键请考虑使用更优秀的 Python 解释器、使用类似 joblib 的库以及使用其他语言编写多线程实现。
好了不说了我要继续当舔狗去了~~~