舔狗日记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 中的画图库 PIL(Python 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, fps=fps) 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, fps=fps) 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 的库以及使用其他语言编写多线程实现。

好了,不说了,我要继续当舔狗去了~~~

舔狗日记:学姐生日快到了,使用Python把她的照片做成视频当礼物相关推荐

  1. js版微信测试号推送消息、生日、纪念日、网易云热评、舔狗日记【JavaScript版】保姆级教程 青龙面板做微信测试号推送生日、纪念日

    文章目录 微信测试号推送消息 一.申请微信测试号 二.下载nodeJs 1.下载安装包 2.检查是否安装成功 三.设置测试号发送信息的模板 四.编写发送消息代码(必须装好nodeJs) 1.编写代码 ...

  2. 还在为追不到女神发愁吗?破解舔狗日记一键生成,让你轻松1秒5舔~

    吾爱破解热榜出现了奇怪的东西<舔狗日记> 舔狗日记运行效果图 一键生成舔狗日记小工具,打开工具即可根据当天日期生成舔狗日记,简单快捷反超其他舔狗! 程序运行的同时,还会自动生成txt文件, ...

  3. 舔狗日记更新美化版源码

    我们是狗,舔狗.基于上一版中的数据,重新设计了舔狗日记. 人肉对每段数据的内容.标点符号进行纠错与优化(不一定标准):并按本人理解进行了划重点标记. 接入和风天气API,获取城市.气象.气温.免费版每 ...

  4. 舔狗日记随机展示网站源码

    最近各种日记挺火的 什么 舔狗.保安.小偷...主要是在首页使用了js,首页添加了一个"再来一段"按钮,无需刷新即可实现显示新的内容.至于舔狗日记内容,存放在index.js文件里 ...

  5. 我的舔狗日记网站制作

    一直说本公众号是集 好货.软件.福利.教程于一体的宝藏根据地,前段时间好货软件福利已经发布不少了,玩的看的听的都挺齐全,今天出一期"舔狗日记"的网站制作的教程,我进来说的明白些,让 ...

  6. 钉钉自定义机器人python_使用钉钉自定义机器人发送舔狗日记[70行][python]

    [Python] 纯文本查看 复制代码# -*- coding: utf-8 -*- import requests import json import time #下面是解密用到的模块 impor ...

  7. 舔狗日记网PHP源码

    介绍: 分享一个的源码"舔狗日记" 这是一个在原基础上由我修改的源码[吐舌] 原源码只能有随机切换的功能,还有大部分ui 我把它修改了少部分,一直在学习之中! [阴险] 添加了bg ...

  8. 舔狗日记-土味情话-每日一言三合一小程序源码下载带安装教程

    舔狗日记-土味情话-每日一言三合一小程序源码下载带安装教程 支持扩展更多小程序 1.去微信公众平台申请小程序并填好资料(https://mp.weixin.qq.com) 2.下载微信开发者工具 3. ...

  9. Python舔狗日记学习手册 【没想到还有第二期】

    嗨害大家好鸭!我是小熊猫❤ 本小熊猫是真没想到- 舔狗日记还能出第二期- 咳咳-女神说想将网上的文章转存为PDF文档,全保存在电脑上慢慢看- 我一听,这不是我的拿手好戏嘛~ 今天真是走了好运诶~ ~ ...

最新文章

  1. 让DJANGO里的get_success_url定义的reverse_lazy带参数跳转
  2. 100c之50:到底谁在说谎
  3. QT使用winsocket
  4. CTL_CODE说明
  5. 虚拟化服务器内存容量与数量,虚拟化服务器内存容量与数量
  6. Android通过Wifi来调试你的应用
  7. OFFICE使用技术:让几个自选图形间距相等
  8. STC学习:霍尔开关器件
  9. The proxy server is refusing connections 怎么解决呢?
  10. 左程云 - 大厂刷题班 - 一种字符在左,另一种字符在右的最少交换次数
  11. oracle toad 价格,Toad for oracle 软件产品模块对比,方便大家选型。
  12. 物联网基础设施安全防护
  13. 从0到1万字贴心讲解单体架构到分布式架构的演变(第一篇)
  14. NOIP模拟赛 17.10.10
  15. 操作系统————应用题
  16. 将SSH多次登录失败的IP加入黑名单
  17. java drm_Linux DRM那些事-RockPI DRM
  18. Linux系统 Shell脚本语言
  19. EAST的EPTC骗局
  20. 数学建模论文基本格式(转载)

热门文章

  1. assetManager.loadBundle总是报错
  2. Linux 下ftp匿名登录常见问题
  3. Goby新一代网络安全工具
  4. 分享一些有意思的软件公司和人——流媒体音乐服务商Pandora
  5. log4j2禁止在控制台打印HikariPool日志
  6. Yoga 14s电脑亮度不能调节?教你一招一下搞定。
  7. springboot项目如何访问项目中的html页面
  8. 软件测试真实BAT大厂技术总监三面,已成功入职【建议收藏】附标准答案
  9. java使用tess4j实现图片上的文字识别
  10. 如何永久禁止百战沙城,血饮龙纹等流氓软件的安装。