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进阶教程之函数对象(函数也是对象)
Aug 30 Python
Python爬取APP下载链接的实现方法
Sep 30 Python
详解Python import方法引入模块的实例
Aug 02 Python
Python实现PS图像调整黑白效果示例
Jan 25 Python
Python中format()格式输出全解
Apr 12 Python
Python生成一个迭代器的实操方法
Jun 18 Python
Python实现微信中找回好友、群聊用户撤回的消息功能示例
Aug 23 Python
Pandas时间序列:时期(period)及其算术运算详解
Feb 25 Python
关于win10在tensorflow的安装及在pycharm中运行步骤详解
Mar 16 Python
Python爬虫设置ip代理过程解析
Jul 20 Python
Python基础之赋值,浅拷贝,深拷贝的区别
Apr 30 Python
python中opencv实现图片文本倾斜校正
Jun 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
dede全站URL静态化改造[070414更正]
2007/04/17 PHP
php中可能用来加密字符串的函数[base64_encode、urlencode、sha1]
2012/01/16 PHP
php学习笔记之面向对象编程
2012/12/29 PHP
浅析Dos下运行php.exe,出现没有找到php_mbstring.dll 错误的解决方法
2013/06/29 PHP
Linux下安装oracle客户端并配置php5.3
2014/10/12 PHP
如何打开php的gd2库
2017/02/09 PHP
JS/FLASH实现复制代码到剪贴板(兼容所有浏览器)
2013/05/27 Javascript
简单实用jquery版三级联动select示例
2013/07/04 Javascript
jQuery中hover方法和toggle方法使用指南
2015/02/27 Javascript
localResizeIMG先压缩后使用ajax无刷新上传(移动端)
2015/08/11 Javascript
JavaScript统计网站访问次数的实现代码
2015/11/18 Javascript
ionic实现带字的toggle滑动组件
2016/08/27 Javascript
JavaScript实现经典排序算法之插入排序
2016/12/28 Javascript
Canvas实现放射线动画效果
2017/02/15 Javascript
详解node+express+ejs+bootstrap构建项目
2017/09/27 Javascript
详解从零搭建 vue2 vue-router2 webpack3 工程
2017/11/22 Javascript
layui复选框限制选择个数的方法
2019/09/18 Javascript
vue监听用户输入和点击功能
2019/09/27 Javascript
vue路由传参页面刷新参数丢失问题解决方案
2019/10/08 Javascript
vue 实现移动端键盘搜索事件监听
2019/11/06 Javascript
[03:42]2014DOTA2国际邀请赛 第三日比赛排位扑朔迷离
2014/07/12 DOTA
Python模块搜索概念介绍及模块安装方法介绍
2015/06/03 Python
详解K-means算法在Python中的实现
2017/12/05 Python
浅谈Python2、Python3相对路径、绝对路径导入方法
2018/06/22 Python
python+selenium打印当前页面的titl和url方法
2018/06/22 Python
docker django无法访问redis容器的解决方法
2019/08/21 Python
python实现扫雷游戏的示例
2020/10/20 Python
python logging模块的使用详解
2020/10/23 Python
HTML5中的音频和视频媒体播放元素小结
2016/01/29 HTML / CSS
英国在线药房和在线医生:LloydsPharmacy
2019/10/21 全球购物
丝芙兰意大利官方网站:Sephora.it
2019/12/13 全球购物
澳大利亚在线性感内衣商店:Fantasy Lingerie
2021/02/07 全球购物
2015年社区民政工作总结
2015/04/21 职场文书
2015年幼儿园中班工作总结
2015/04/25 职场文书
JavaScript原型链详解
2021/11/07 Javascript
KVM基础命令详解
2022/04/30 Servers