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中的True,False条件判断实例分析
Jan 12 Python
实例讲解Python中函数的调用与定义
Mar 14 Python
深入浅析python定时杀进程
Jun 06 Python
Python实现快速排序算法及去重的快速排序的简单示例
Jun 26 Python
Python针对给定字符串求解所有子序列是否为回文序列的方法
Apr 21 Python
对pandas replace函数的使用方法小结
May 18 Python
python寻找list中最大值、最小值并返回其所在位置的方法
Jun 27 Python
解决python3 Pycharm上连接数据库时报错的问题
Dec 03 Python
Python利用 utf-8-sig 编码格式解决写入 csv 文件乱码问题
Feb 21 Python
python爬虫请求头设置代码
Jul 28 Python
python 生成器需注意的小问题
Sep 29 Python
Python3+PyCharm+Django+Django REST framework配置与简单开发教程
Feb 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
Windows中安装Apache2和PHP4权威指南
2006/11/18 PHP
PHP图片处理之使用imagecopy函数添加图片水印实例
2014/11/19 PHP
CentOS下与Apache连接的PHP多版本共存方案实现详解
2015/12/19 PHP
PHP使用curl函数发送Post请求的注意事项
2016/11/26 PHP
Yii2.0实现的批量更新及批量插入功能示例
2019/01/29 PHP
jQuery 使用手册(七)
2009/09/23 Javascript
JavaScript是否可实现多线程  深入理解JavaScript定时机制
2009/12/22 Javascript
Jquery ThickBox插件使用心得(不建议使用)
2010/09/08 Javascript
jquery 元素控制(追加元素/追加内容)介绍及应用
2013/04/21 Javascript
多种方法判断Javascript对象是否存在
2013/09/22 Javascript
页面js遇到乱码问题的解决方法是和无法转码的情况
2014/04/30 Javascript
jQuery中first()方法用法实例
2015/01/06 Javascript
用js控件div的滚动条,让它在内容更新时自动滚到底部的实现方法
2016/10/27 Javascript
AngularJS自定义服务与fliter的混合使用
2016/11/24 Javascript
用v-html解决Vue.js渲染中html标签不被解析的问题
2016/12/14 Javascript
JavaScript数组和对象的复制
2017/03/21 Javascript
详解在Angular项目中添加插件ng-bootstrap
2017/07/04 Javascript
React Native实现进度条弹框的示例代码
2017/07/17 Javascript
在vscode里使用.vue代码模板的方法
2018/04/28 Javascript
提升node.js中使用redis的性能遇到的问题及解决方法
2018/10/30 Javascript
JS尾递归的实现方法及代码优化技巧
2019/01/19 Javascript
jQuery实现的五星点评功能【案例】
2019/02/18 jQuery
解决layui使用layui-icon出现默认图标的问题
2019/09/11 Javascript
原生js实现五子棋游戏
2020/05/28 Javascript
[06:33]DOTA2亚洲邀请赛小组赛第二日 TOP10精彩集锦
2015/01/31 DOTA
win与linux系统中python requests 安装
2016/12/04 Python
使用PyInstaller将python转成可执行文件exe笔记
2018/05/26 Python
pip指定python位置安装软件包的方法
2019/07/12 Python
简单几步用纯CSS3实现3D翻转效果
2019/01/17 HTML / CSS
人力资源专员自我评价怎么写
2013/09/19 职场文书
办公室秘书岗位职责范本
2014/02/11 职场文书
爱心活动计划书
2014/04/26 职场文书
新学期家长寄语2016
2015/12/03 职场文书
Requests什么的通通爬不了的Python超强反爬虫方案!
2021/05/20 Python
如何理解python接口自动化之logging日志模块
2021/06/15 Python
SQL之各种join小结详细讲解
2021/08/04 MySQL