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 相关文章推荐
开始着手第一个Django项目
Jul 15 Python
DataFrame中的object转换成float的方法
Apr 10 Python
Python图像处理之图像的读取、显示与保存操作【测试可用】
Jan 04 Python
Python 使用PyQt5 完成选择文件或目录的对话框方法
Jun 27 Python
anaconda中更改python版本的方法步骤
Jul 14 Python
python实现按首字母分类查找功能
Oct 31 Python
Python+OpenCV 实现图片无损旋转90°且无黑边
Dec 12 Python
使用Python+selenium实现第一个自动化测试脚本
Mar 17 Python
python GUI模拟实现计算器
Jun 22 Python
sklearn的predict_proba使用说明
Jun 28 Python
Python用K-means聚类算法进行客户分群的实现
Aug 23 Python
Django限制API访问频率常用方法解析
Oct 12 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+MySQL搭建聊天室功能实例代码
2012/08/20 PHP
Nginx服务器上安装并配置PHPMyAdmin的教程
2015/08/18 PHP
php实现购物车功能(上)
2020/07/23 PHP
PHP处理CSV表格文件的常用操作方法总结
2016/07/01 PHP
php查看一个变量的占用内存的实例代码
2020/03/29 PHP
复制小说文本时出现的随机乱码的去除方法
2010/09/07 Javascript
extjs中grid中嵌入动态combobox的应用
2011/01/01 Javascript
js类定义函数时用prototype与不用的区别示例介绍
2014/06/10 Javascript
node.js中的socket.io的广播消息
2014/12/15 Javascript
js实现点击图片将图片地址复制到粘贴板的方法
2015/02/16 Javascript
利用JS提交表单的几种方法和验证(必看篇)
2016/09/17 Javascript
解决Window10系统下Node安装报错的问题分析
2016/12/13 Javascript
利用Jquery实现几款漂亮实用的时间轴(附示例代码)
2017/02/15 Javascript
在javascript中,null>=0 为真,null==0却为假,null的值详解
2017/02/22 Javascript
值得分享和收藏的xmlplus组件学习教程
2017/05/05 Javascript
Scala解析Json字符串的实例详解
2017/10/11 Javascript
vue页面跳转后返回原页面初始位置方法
2018/02/11 Javascript
vue 根据选择条件显示指定参数的例子
2019/11/09 Javascript
JavaScript 实现自己的安卓手机自动化工具脚本(推荐)
2020/05/13 Javascript
JS+CSS实现过渡特效
2021/01/02 Javascript
Python中最常用的操作列表的几种方法归纳
2015/04/24 Python
python获取中文字符串长度的方法
2018/11/14 Python
python按照多个条件排序的方法
2019/02/08 Python
浅谈Python中的可迭代对象、迭代器、For循环工作机制、生成器
2019/03/11 Python
解决django model修改添加字段报错的问题
2019/11/18 Python
解决python replace函数替换无效问题
2020/01/18 Python
意大利体育用品网上商城:Nencini Sport
2016/08/18 全球购物
美国最大的在线生存商店:Survival Frog
2020/12/13 全球购物
我们没有写servlet的构造方法,那么容器是怎么创建servlet的实例呢
2013/04/24 面试题
网上卖盒饭创业计划书范文
2014/02/07 职场文书
2014年入党积极分子党课学习心得体会模板
2014/04/03 职场文书
区级文明单位申报材料
2014/05/15 职场文书
个人作风纪律整顿整改措施
2014/10/25 职场文书
2014年远程教育工作总结
2014/12/09 职场文书
初中团支书竞选稿
2015/11/21 职场文书
Nebula Graph解决风控业务实践
2022/03/31 MySQL