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编写提取日志中的中文的脚本的方法
Apr 30 Python
python机器学习案例教程——K最近邻算法的实现
Dec 28 Python
Python获取当前公网ip并自动断开宽带连接实例代码
Jan 12 Python
python实现Decorator模式实例代码
Feb 09 Python
使用Python向C语言的链接库传递数组、结构体、指针类型的数据
Jan 29 Python
Python实现求两个数组交集的方法示例
Feb 23 Python
Python 实例方法、类方法、静态方法的区别与作用
Aug 14 Python
Python中Unittest框架的具体使用
Aug 27 Python
Python3多线程版TCP端口扫描器
Aug 31 Python
Python爬虫实现的根据分类爬取豆瓣电影信息功能示例
Sep 15 Python
python自动化测试无法启动谷歌浏览器问题
Oct 10 Python
pytorch掉坑记录:model.eval的作用说明
Jun 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
NT IIS下用ODBC连接数据库
2006/10/09 PHP
PHP页面间传递参数实例代码
2008/06/05 PHP
php 8小时时间差的解决方法小结
2009/12/22 PHP
分享一个漂亮的php验证码类
2016/09/29 PHP
PHP简单验证码功能机制实例详解
2019/03/27 PHP
javascript控制frame,iframe的src属性代码
2009/12/31 Javascript
javascript 异步页面查询实现代码(asp.net)
2010/05/26 Javascript
javascript中常用编程知识
2013/04/08 Javascript
JQuery each()嵌套使用小结
2014/04/18 Javascript
jquery实现手风琴效果
2015/11/20 Javascript
JavaScript动态插入CSS的方法
2015/12/10 Javascript
浅析AngularJS Filter用法
2015/12/28 Javascript
基于javascript实现的快速排序
2016/12/02 Javascript
Jquery Easyui表单组件Form使用详解(30)
2016/12/19 Javascript
JavaScript生成.xls文件的代码
2016/12/22 Javascript
JavaScript & jQuery完美判断图片是否加载完毕
2017/01/08 Javascript
基于JavaScript实现窗口拖动效果
2017/01/18 Javascript
非常实用的vue导航钩子
2017/03/20 Javascript
详解Angular2组件之间如何通信
2017/06/22 Javascript
详解node Async/Await 更好的异步编程解决方案
2018/05/10 Javascript
JavaScript模板引擎应用场景及实现原理详解
2018/12/14 Javascript
React Hooks 实现和由来以及解决的问题详解
2020/01/17 Javascript
详解Python函数作用域的LEGB顺序
2016/05/14 Python
python flask 多对多表查询功能
2017/06/25 Python
[原创]教女朋友学Python3(二)简单的输入输出及内置函数查看
2017/11/30 Python
详解Django rest_framework实现RESTful API
2018/05/24 Python
linux环境中没有网络怎么下载python
2019/07/07 Python
python3的url编码和解码,自定义gbk、utf-8的例子
2019/08/22 Python
python序列类型种类详解
2020/02/26 Python
Tensorflow中的dropout的使用方法
2020/03/13 Python
python生成xml时规定dtd实例方法
2020/09/21 Python
Python约瑟夫生者死者小游戏实例讲解
2021/01/04 Python
美国女士泳装店:Swimsuits For All
2017/03/02 全球购物
青年干部培训班学习心得体会
2016/01/06 职场文书
Python实现老照片修复之上色小技巧
2021/10/16 Python
SQL Server远程连接的设置步骤(图文)
2022/03/23 SQL Server