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 相关文章推荐
centos 下面安装python2.7 +pip +mysqld
Nov 18 Python
Python使用PIL库实现验证码图片的方法
Mar 11 Python
Windows下安装python2和python3多版本教程
Mar 30 Python
Python输出带颜色的字符串实例
Oct 10 Python
解决Pandas的DataFrame输出截断和省略的问题
Feb 08 Python
python实现接口并发测试脚本
Jun 25 Python
Python 200行代码实现一个滑动验证码过程详解
Jul 11 Python
详解python中的模块及包导入
Aug 30 Python
Python大数据之从网页上爬取数据的方法详解
Nov 16 Python
基于Python批量生成指定尺寸缩略图代码实例
Nov 20 Python
Python如何输出警告信息
Jul 30 Python
详解使用Python写一个向数据库填充数据的小工具(推荐)
Sep 11 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学习 运算符与运算符优先级
2008/06/15 PHP
对PHP新手的一些建议(PHP学习经验总结)
2014/08/20 PHP
使用GD库生成带阴影文字的图片
2015/03/27 PHP
PHP实现的购物车类实例
2015/06/17 PHP
PHP封装类似thinkphp连贯操作数据库Db类与简单应用示例
2019/05/08 PHP
jquery 应用代码 方便的排序功能
2010/02/06 Javascript
JQuery1.8 判断元素是否绑定事件的方法
2014/07/10 Javascript
DWR中各种java方法的调用
2016/05/04 Javascript
详解Node.js中的事件机制
2016/09/22 Javascript
手机软键盘弹出时影响布局的解决方法
2016/12/15 Javascript
实例详解JavaScript中setTimeout函数的执行顺序
2017/07/12 Javascript
基于Vuex无法观察到值变化的解决方法
2018/03/01 Javascript
[40:19]完美世界DOTA2联赛PWL S3 Rebirth vs CPG 第二场 12.18
2020/12/19 DOTA
跟老齐学Python之??碌某?? target=
2014/09/12 Python
Python挑选文件夹里宽大于300图片的方法
2015/03/05 Python
Python实现测试磁盘性能的方法
2015/03/12 Python
详细探究Python中的字典容器
2015/04/14 Python
如何使用python爬取csdn博客访问量
2016/02/14 Python
简单掌握Python的Collections模块中counter结构的用法
2016/07/07 Python
python使用wxpy轻松实现微信防撤回的方法
2019/02/21 Python
利用python脚本如何简化jar操作命令
2019/02/24 Python
Python的matplotlib绘图如何修改背景颜色的实现
2019/07/16 Python
python3.6生成器yield用法实例分析
2019/08/23 Python
tensorflow 初始化未初始化的变量实例
2020/02/06 Python
python实现简单的购物程序代码实例
2020/03/03 Python
解决python和pycharm安装gmpy2 出现ERROR的问题
2020/08/28 Python
HTML5+CSS3实现无插件拖拽上传图片(支持预览与批量)
2017/01/05 HTML / CSS
和平主题的演讲稿
2014/01/12 职场文书
表决心的诗句大全
2014/03/11 职场文书
演讲主持词
2014/03/18 职场文书
银行竞聘演讲稿
2014/05/16 职场文书
酒店端午节活动方案
2014/08/26 职场文书
迎国庆演讲稿
2014/09/15 职场文书
2015年小学中秋节活动总结
2015/03/23 职场文书
PyTorch梯度裁剪避免训练loss nan的操作
2021/05/24 Python
Pytorch 如何实现常用正则化
2021/05/27 Python