Python做图像处理及视频音频文件分离和合成功能


Posted in Python onNovember 24, 2020

一、简介

Imageio是一个Python库,提供了一个简单的界面来读取和写入各种图像数据,包括动画图像,视频,体积数据和科学格式。它是跨平台的,运行在Python 2.7和3.4+上,易于安装。

作为用户,您只需要记住一些功能:

  • imread()和imwrite() - 用于单个图像
  • mimread()和mimwrite() - 用于图像系列(动画)
  • volread()和volwrite() - 用于体积图像数据
  • get_reader()和get_writer() - 用于更多控制(例如流式传输)
  • 有关更多信息,请参阅文档。

通过一系列功能简单的界面。
使用conda或pip 易于安装。
几乎没有依赖(只有Numpy和Pillow)。
纯Python,运行在Python 2.7,3.4 +和Pypy上
跨平台,在Windows,Linux,OS X上运行(Raspberry Pi计划)
许多支持的格式。
可以读取文件名,文件对象,zip文件,http / ftp和原始字节。
使用插件轻松扩展。
通过许多测试和持​​续集成来维护代码质量。

Imageio有一个相对简单的核心,为不同的文件格式提供通用接口。这个核心负责从不同的源(如http)读取,并为插件公开一个简单的API来访问原始数据。所有文件格式都在插件中实现。可以轻松注册其他插件。

一些插件依赖于外部库(例如ffmpeg)。Imageio提供了一种通过一个函数调用下载这些函数的方法,并在需要时提示用户这样做。下载缓存在您的appdata目录中,这可以保持imageio轻松和可扩展。

Imageio提供各种图像格式,包括科学格式。任何有关实现更多格式的帮助都非常受欢迎!

代码库遵循PEP8样式指南的(子集)。我们力求最大的测试覆盖率(核心为100%,每个插件为> 95%)。

二、代码总结:

import subprocess
import imageio
import os
from PIL import Image

def video2mp3(file_name):
 """
 将视频转为音频
 :param file_name: 传入视频文件的路径
 :return:
 """
 outfile_name = file_name.split('.')[0] + '.mp3'
 subprocess.call('ffmpeg -i ' + file_name
     + ' -f mp3 ' + outfile_name, shell=True)

def video_add_mp3(file_name, mp3_file):
 """
  视频添加音频
 :param file_name: 传入视频文件的路径
 :param mp3_file: 传入音频文件的路径
 :return:
 """
 outfile_name = file_name.split('.')[0] + '-txt.mp4'
 subprocess.call('ffmpeg -i ' + file_name
     + ' -i ' + mp3_file + ' -strict -2 -f mp4 '
     + outfile_name, shell=True)

def compose_gif(file_path):
 """
  将静态图片转为gif动图
  :param file_path: 传入图片的目录的路径
  :return:
 """
 img_paths = sorted([int(p[3:-4]) for p in os.listdir(file_path) if os.path.splitext(p)[1] == ".png"])
 img_paths = img_paths[:int(len(img_paths) / 3.6)]
 gif_images = []
 for path in img_paths:
  gif_images.append(imageio.imread('{0}/out{1}.png'.format(file_path, path)))
 imageio.mimsave("test.gif", gif_images, fps=30)

def compress_png(file_path):
 """
  将gif动图转为每张静态图片
  :param file_path: 传入gif文件的路径
  :return:
 """
 img_paths = [p for p in os.listdir(file_path) if os.path.splitext(p)[1] == ".png"]
 for filename in img_paths:
  with Image.open('{0}/{1}'.format(file_path, filename)) as im:
   width, height = im.size
   new_width = 150
   new_height = int(new_width * height * 1.0 / width)
   resized_im = im.resize((new_width, new_height))
   output_filename = filename
   resized_im.save('{0}/{1}'.format(file_path, output_filename))

if __name__ == '__main__':
 # video2mp3(file_name='data-a.mp4')
 video_add_mp3(file_name='swap-data-a.mp4', mp3_file='data-a.mp3')
 # compose_gif(file_path='merged')
 # compress_png(file_path='merged')

到此这篇关于Python做图像处理及视频音频文件分离和合成功能的文章就介绍到这了,更多相关python视频音频分离和合成内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
在类Unix系统上开始Python3编程入门
Aug 20 Python
Python PyQt5实现的简易计算器功能示例
Aug 23 Python
Python中时间datetime的处理与转换用法总结
Feb 18 Python
Python3.5实现的三级菜单功能示例
Mar 25 Python
Python基础知识点 初识Python.md
May 14 Python
Python机器学习算法库scikit-learn学习之决策树实现方法详解
Jul 04 Python
Django 实现admin后台显示图片缩略图的例子
Jul 28 Python
pymysql模块的使用(增删改查)详解
Sep 09 Python
Docker部署Python爬虫项目的方法步骤
Jan 19 Python
Python中文分词库jieba,pkusegwg性能准确度比较
Feb 11 Python
Python爬虫:从m3u8文件里提取小视频的正确操作
May 14 Python
python字符串拼接.join()和拆分.split()详解
Nov 23 Python
Python调用Redis的示例代码
Nov 24 #Python
基于django和dropzone.js实现上传文件
Nov 24 #Python
Pycharm创建文件时自动生成文件头注释(自定义设置作者日期)
Nov 24 #Python
Django web自定义通用权限控制实现方法
Nov 24 #Python
记一次python 爬虫爬取深圳租房信息的过程及遇到的问题
Nov 24 #Python
Pycharm安装python库的方法
Nov 24 #Python
python opencv角点检测连线功能的实现代码
Nov 24 #Python
You might like
php metaphone()函数及php localeconv() 函数实例解析
2016/05/15 PHP
jquery CSS选择器笔记
2010/03/29 Javascript
javascipt基础内容--需要注意的细节
2013/04/10 Javascript
jQuery 属性选择器element[herf*='value']使用示例
2013/10/20 Javascript
浅析JS原型继承与类的继承
2016/04/07 Javascript
jQuery点击其他地方时菜单消失的实现方法
2016/04/22 Javascript
探究Vue.js 2.0新增的虚拟DOM
2016/10/20 Javascript
JavaScript实现清空(重置)文件类型INPUT元素值的方法
2016/11/17 Javascript
JS中如何实现点击a标签返回页面顶部的问题
2017/01/19 Javascript
JavaScript创建对象_动力节点Java学院整理
2017/06/27 Javascript
node.js+captchapng+jsonwebtoken实现登录验证示例
2017/08/17 Javascript
Vue列表渲染的示例代码
2018/11/01 Javascript
jquery获取file表单选择文件的路径、名字、大小、类型
2019/01/18 jQuery
JS中getElementsByClassName与classList兼容性问题解决方案分析
2019/08/07 Javascript
微信小程序实现拨打电话功能的示例代码
2020/06/28 Javascript
vue 使用原生组件上传图片的实例
2020/09/08 Javascript
openlayers实现地图测距测面
2020/09/25 Javascript
vue router返回到指定的路由的场景分析
2020/11/10 Javascript
python实现发送和获取手机短信验证码
2016/01/15 Python
Python正则表达式教程之三:贪婪/非贪婪特性
2017/03/02 Python
Python3中的json模块使用详解
2018/05/05 Python
Python中typing模块与类型注解的使用方法
2019/08/05 Python
Python中*args和**kwargs的区别详解
2019/09/17 Python
python+OpenCV实现车牌号码识别
2019/11/08 Python
使用CSS3代码绘制可爱的Hello Kitty猫
2016/08/03 HTML / CSS
英国二手iPhone、音乐、电影和游戏商店:musicMagpie
2018/10/26 全球购物
关于保护环境的标语
2014/06/09 职场文书
学校安全教育月活动总结
2014/07/07 职场文书
终止劳动合同协议书
2014/10/05 职场文书
酒会邀请函
2015/01/31 职场文书
2015秋季小学开学寄语
2015/05/27 职场文书
教师节祝酒词
2015/08/11 职场文书
西部计划志愿者工作总结
2015/08/11 职场文书
Redis Cluster 集群搭建你会吗
2021/08/04 Redis
springboot 自定义配置 解决Boolean属性不生效
2022/03/18 Java/Android
Win11开始菜单添加休眠选项
2022/04/19 数码科技