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 相关文章推荐
Flask数据库迁移简单介绍
Oct 24 Python
python实现随机梯度下降(SGD)
Mar 24 Python
flask中主动抛出异常及统一异常处理代码示例
Jan 18 Python
浅析python协程相关概念
Jan 20 Python
Python对excel文档的操作方法详解
Dec 10 Python
简单了解python的内存管理机制
Jul 08 Python
Django如何使用第三方服务发送电子邮件
Aug 14 Python
django 通过url实现简单的权限控制的例子
Aug 16 Python
python 回溯法模板详解
Feb 26 Python
详解python logging日志传输
Jul 01 Python
Python 执行矩阵与线性代数运算
Aug 01 Python
Python paramiko使用方法代码汇总
Nov 20 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
set_include_path在win和linux下的区别
2008/01/10 PHP
php将mysql数据库整库导出生成sql文件的具体实现
2014/01/08 PHP
php表单提交与$_POST实例分析
2015/01/26 PHP
PHP 构造函数和析构函数原理与用法分析
2020/04/21 PHP
jquery ready()的几种实现方法小结
2010/06/18 Javascript
JavaScript 小型打飞机游戏实现原理说明
2010/10/28 Javascript
js常用排序实现代码
2010/12/28 Javascript
深入理解Javascript作用域与变量提升
2013/12/09 Javascript
快速解决jquery之get缓存问题的最简单方法介绍
2013/12/19 Javascript
jQuery模拟点击A标记示例参考
2014/04/17 Javascript
自定义jquery模态窗口插件无法在顶层窗口显示问题
2014/05/29 Javascript
推荐8款jQuery轻量级树形Tree插件
2014/11/12 Javascript
简单谈谈jQuery(function(){})与(function(){})(jQuery)
2014/12/19 Javascript
关于JavaScript限制字数的输入框的那些事
2016/08/14 Javascript
基于Vue实现支持按周切换的日历
2020/09/24 Javascript
基于jQuery Ajax实现下拉框无刷新联动
2017/12/06 jQuery
一种angular的方法级的缓存注解(装饰器)
2018/03/13 Javascript
小程序实现层叠卡片滑动效果
2019/08/26 Javascript
用Python进行行为驱动开发的入门教程
2015/04/23 Python
python 如何快速找出两个电子表中数据的差异
2017/05/26 Python
Python中分支语句与循环语句实例详解
2018/09/13 Python
Python中的pathlib.Path为什么不继承str详解
2019/06/23 Python
浅谈python3 构造函数和析构函数
2020/03/12 Python
jupyter notebook 实现matplotlib图动态刷新
2020/04/22 Python
python+adb命令实现自动刷视频脚本案例
2020/04/23 Python
Python列表推导式实现代码实例
2020/09/09 Python
python爬虫多次请求超时的几种重试方法(6种)
2020/12/01 Python
css3背景_动力节点Java学院整理
2017/07/11 HTML / CSS
详解CSS3弹性伸缩盒
2020/09/21 HTML / CSS
快速创建 HTML5 Canvas 电信网络拓扑图的示例代码
2018/03/21 HTML / CSS
美国第一个网上卖鞋零售商:OnlineShoes.com
2017/09/24 全球购物
开放系统互连参考模型
2016/06/29 面试题
2014两会优秀的心得体会范文
2014/03/17 职场文书
房屋租赁合同解除协议书
2014/10/11 职场文书
思想品德评语大全
2014/12/31 职场文书
SpringBoot集成Redis的思路详解
2021/10/16 Redis