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中使用xlrd、xlwt操作excel表格详解
Jan 29 Python
Python中用memcached来减少数据库查询次数的教程
Apr 07 Python
使用Python的Flask框架表单插件Flask-WTF实现Web登录验证
Jul 12 Python
利用Python批量提取Win10锁屏壁纸实战教程
Mar 27 Python
对Python 数组的切片操作详解
Jul 02 Python
python 2.7 检测一个网页是否能正常访问的方法
Dec 26 Python
Django MEDIA的配置及用法详解
Jul 25 Python
Python Selenium 之数据驱动测试的实现
Aug 01 Python
OpenCV Python实现图像指定区域裁剪
Mar 12 Python
python爬虫---requests库的用法详解
Sep 28 Python
python 获取字典键值对的实现
Nov 12 Python
Python 避免字典和元组的多重嵌套问题
Jul 15 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 setTime 设置当前时间的代码
2012/08/27 PHP
PHP开发的文字水印,缩略图,图片水印实现类与用法示例
2019/04/12 PHP
jQuery 常见学习网站与参考书
2009/11/09 Javascript
javascript中的正则表达式使用指南
2015/03/01 Javascript
js实现键盘Enter键提交表单的方法
2015/05/27 Javascript
在JavaScript中使用开平方根的sqrt()方法
2015/06/15 Javascript
基于JavaScript实现根据手机定位获取当前具体位置(X省X市X县X街道X号)
2015/12/29 Javascript
Node.js connect ECONNREFUSED错误解决办法
2016/09/15 Javascript
JS正则表达式验证中文字符
2017/05/08 Javascript
JavaScript 点击触发复制功能实例详解
2018/11/02 Javascript
JavaScript类的继承操作实例总结
2018/12/20 Javascript
Vue组件通信的几种实现方法
2019/04/25 Javascript
layui 地区三级联动 form select 渲染的实例
2019/09/27 Javascript
js实现的在本地预览图片功能示例
2019/11/09 Javascript
利用React高阶组件实现一个面包屑导航的示例
2020/08/23 Javascript
uni-app使用countdown插件实现倒计时
2020/11/01 Javascript
python写xml文件的操作实例
2014/10/05 Python
python实现的文件夹清理程序分享
2014/11/22 Python
Python生成随机密码
2015/03/10 Python
在Python中使用AOP实现Redis缓存示例
2017/07/11 Python
浅谈python for循环的巧妙运用(迭代、列表生成式)
2017/09/26 Python
python GUI实现小球满屏乱跑效果
2019/05/09 Python
python 批量修改 labelImg 生成的xml文件的方法
2019/09/09 Python
初学者学习Python好还是Java好
2020/05/26 Python
Django REST Swagger实现指定api参数
2020/07/07 Python
opencv 阈值分割的具体使用
2020/07/08 Python
使用HTML和CSS实现的标签云效果(附demo)
2021/02/03 HTML / CSS
Visual-Click葡萄牙:欧洲领先的在线眼镜商
2020/02/17 全球购物
吃空饷专项治理工作实施方案
2014/03/04 职场文书
班级团队活动方案
2014/08/14 职场文书
网络营销计划
2015/01/17 职场文书
学生检讨书范文
2015/01/27 职场文书
2015年秘书个人工作总结
2015/04/25 职场文书
工地食品安全责任书
2015/05/09 职场文书
广告策划的实习心得体会总结!
2019/07/22 职场文书
《好妈妈胜过好老师》:每个孩子的优秀都是有源头的
2020/01/03 职场文书