当前位置: 首页 > news >正文

Python - GFPGAN + MoviePy 提高人物视频画质

目录

一.引言

二.gif_to_png

三.gfp_gan

四.png_to_gif

五.总结


一.引言

前面我们介绍了 GFP-GAN 提高人脸质量 与 OCR 提取视频台词、字幕,前者可以提高图像质量,后者可以从视频中抽帧,于是博主便想到了将二者进行结合并优化人物 GIF 图像质量。其步骤如下:

 MoviePy 截取视频关键帧

 GFP-GAN 提高人脸图像质量

 MoviePy 关键帧合并为 GIF

Tips:

后面的执行步骤需要电脑上已经配置好 GFP-GAN 的环境且安装了 moviepy 的依赖。

二.gif_to_png

def gif_to_png(_file_name, _output):from moviepy.editor import VideoFileClip# Load your gifclip = VideoFileClip(_file_name)print(f'Duration: {clip.duration} FPS: {clip.fps}')# Loop over clip framesfor i, frame in enumerate(clip.iter_frames()):from PIL import Imageimg = Image.fromarray(frame)img.save(f'{_output}/frame_{i}.png')if __name__ == '__main__':file_name = "/Users/Desktop/ori.gif"output = "/Users/Desktop/out"gif_to_png(file_name, output)

这一步我们读取 gif 并抽帧保存为多张图片,运行程序后会在 output 文件夹下得到 FPS x Duration = 40 张图片:

Duration: 4.0 FPS: 10.0

由于是老版电视剧的原因,gif 中人物的表情比较糊,画质较差:

三.gfp_gan

python inference_gfpgan.py -i inputs/gif_imgs -o results -v 1.3 -s 2

将上面的多帧图片存储至 GFP-GAN inputs 文件夹下,执行 inference_gfpgan.py,结果将输出至 results 文件夹内:

其中 restored_imgs 文件夹内存储了我们修复的多帧图像,看一下修复效果:

四.png_to_gif

def png_to_gif(_output, gif_name, fps):file_list = os.listdir(_output)file_list.sort()# 构造多个 ImageClip 片段clips = [ImageClip(_output + img).set_duration(1) for img in file_list if img.endswith(".png")]concat_clip = concatenate_videoclips(clips, method="compose")concat_clip.write_gif(gif_name, fps=fps)if __name__ == '__main__':file_name = "/Users/Desktop/ori.gif" # 原始 GIFinput = "/Users/Desktop/result/restored_imgs/" # 修复帧output = "out.gif" # 输出 GIF# 匹配原 GIF 的 FPSori_fps = VideoFileClip(file_name).fpspng_to_gif(input, output, ori_fps)
MoviePy - Building file out.gif with imageio.

出现上述命令后代表开始多帧图像的合并,可以看到修复后的 GIF 人物更加的清晰:

五.总结

GFP-GAN 整体来说可玩性还是很高,后面博主会继续跟进 wave2lip 的测试,把音频、图像、视频结合到一起。这里我们处理的原始 gif 大小为 10m,处理后大小为 14m;同时如果资源比较充足的话,也可以将 GIF 扩展为视频人物细节处理。

http://www.lryc.cn/news/230223.html

相关文章:

  • uniapp插件开发
  • 11 Go的作用域
  • RabbitMQ之消息应答和持久化
  • 【分享】Excel“只读方式”的两种模式
  • 华为与美团达成合作,正式启动鸿蒙原生应用开发。
  • The 8th China Open Source Conference Successfully Concludes
  • 【星海出品】SDN neutron (四) 流分析
  • 数据分析法宝,一个 SQL 语句查询多个异构数据源
  • 解决:element ui表格表头自定义输入框单元格el-input不能输入问题
  • Android 透明度设置
  • python语言的由来与发展历程
  • electronjs入门-编辑器应用程序
  • Xilinx Kintex7中端FPGA解码MIPI视频,基于MIPI CSI-2 RX Subsystem架构实现,提供工程源码和技术支持
  • SIMCSE求相似度分数
  • java入门,从CK到一部分数据到mysql
  • LeetCode(13)除自身以外数组的乘积【数组/字符串】【中等】
  • WPF资源,静态资源,动态资源
  • 绘图软件 OmniGraffle mac中文版特点说明
  • ai批量剪辑矩阵无人直播一站式托管系统源头技术开发
  • CCNA课程实验-14-Final_Lab
  • Latex在图表标题里面引用参考文献时,出现参考文献顺序混乱的解决方案(适用于bibtex)
  • 多进程间通信学习之消息队列共享内存信号灯集
  • 机器学习基础之《回归与聚类算法(6)—模型保存与加载》
  • 修改Openwrt软路由的web端口
  • 编程怎么学习视频教程,编程实例入门教程,中文编程开发语言工具下载
  • 得帆信息携手深信服,联合打造高安全PaaS超融合一体化解决方案
  • arcgis--浮点型栅格数据转整型
  • nginx四层tcp负载均衡及主备、四层udp负载均衡及主备、7层http负载均衡及主备配置(wndows系统主备、负载均衡)
  • Electron 控制屏幕亮度
  • TSINGSEE视频汇聚管理与AI算法视频质量检测方案