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 相关文章推荐
用Python编写web API的教程
Apr 30 Python
linux环境下python中MySQLdb模块的安装方法
Jun 16 Python
浅谈pandas中DataFrame关于显示值省略的解决方法
Apr 08 Python
Python 查找list中的某个元素的所有的下标方法
Jun 27 Python
在cmder下安装ipython以及环境的搭建
Oct 19 Python
使用python将时间转换为指定的格式方法
Nov 12 Python
Python字符串逆序的实现方法【一题多解】
Feb 18 Python
Python OpenCV实现视频分帧
Jun 01 Python
解决Django加载静态资源失败的问题
Jul 28 Python
Python如何实现的二分查找算法
May 27 Python
python能自学吗
Jun 18 Python
Python基础之条件语句详解
Jun 16 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
PHP4在WinXP下IIS和Apache2服务器上的安装实例
2006/10/09 PHP
php 购物车的例子
2009/05/04 PHP
wamp下修改mysql访问密码的解决方法
2013/05/07 PHP
php curl模拟post请求和提交多维数组的示例代码
2015/11/19 PHP
PHP文件缓存smarty模板应用实例分析
2016/02/26 PHP
Zend Framework数据库操作技巧总结
2017/02/18 PHP
javascript实现上传图片前的预览(TX的面试题)
2007/08/20 Javascript
javascript 点击整页变灰的效果(可做退出效果)。
2008/01/09 Javascript
JavaScript 对任意元素,自定义右键菜单的实现方法
2013/05/08 Javascript
文本域中换行符的替换示例
2014/03/04 Javascript
javascript检测是否联网的实现代码
2014/09/28 Javascript
简介JavaScript中toUpperCase()方法的使用
2015/06/06 Javascript
AngularJs解决跨域问题案例详解(简单方法)
2016/05/19 Javascript
jQuery弹出层后禁用底部滚动条(移动端关闭回到原位置)
2016/08/29 Javascript
微信小程序 location API实例详解
2016/10/02 Javascript
原生JS实现简单放大镜效果
2017/02/08 Javascript
nuxt.js中间件实现拦截权限判断的方法
2018/11/21 Javascript
vue-router 起步步骤详解
2019/03/26 Javascript
10种JavaScript最常见的错误(小结)
2019/06/21 Javascript
vscode中eslint插件的配置(prettier配置无效)
2019/09/10 Javascript
[01:15:45]DOTA2上海特级锦标赛B组小组赛#1 Alliance VS Spirit第一局
2016/02/26 DOTA
[01:09]DOTAPLUS——DOTA2的新时代
2018/04/04 DOTA
Python命名空间详解
2014/08/18 Python
HTML5 图片预加载的示例代码
2020/03/25 HTML / CSS
介绍一下Linux内核的排队自旋锁
2014/01/04 面试题
给定一个时间点,希望得到其他时间点
2013/11/07 面试题
制衣厂各岗位职责
2013/12/02 职场文书
大学军训感想
2014/02/12 职场文书
招聘专员岗位职责
2014/03/07 职场文书
大学竞选班长演讲稿
2014/04/24 职场文书
工程款催款函
2015/06/24 职场文书
交流会主持词
2015/07/02 职场文书
Nginx快速入门教程
2021/03/31 Servers
python tkinter模块的简单使用
2021/04/07 Python
灵能百分百第三季什么时候来?
2022/03/15 日漫
Kubernetes关键组件与结构组成介绍
2022/03/31 Servers