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 ZipFile模块详解
Nov 01 Python
python设置检查点简单实现代码
Jul 01 Python
Python 检查数组元素是否存在类似PHP isset()方法
Oct 14 Python
最基础的Python的socket编程入门教程
Apr 23 Python
Pthon批量处理将pdb文件生成dssp文件
Jun 21 Python
Python判断直线和矩形是否相交的方法
Jul 14 Python
python中requests库session对象的妙用详解
Oct 30 Python
Django 2.0版本的新特性抢先看!
Jan 05 Python
python3使用matplotlib绘制条形图
Mar 25 Python
对Python3中列表乘以某一个数的示例详解
Jul 20 Python
Python使用matplotlib绘制Logistic曲线操作示例
Nov 28 Python
Scrapy爬虫文件批量运行的实现
Sep 30 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
ASP和PHP都是可以删除自身的
2007/04/09 PHP
ThinkPHP中的三大自动简介
2014/08/22 PHP
PHP脚本监控Nginx 502错误并自动重启php-fpm
2015/05/13 PHP
PHP实现一个简单url路由功能实例
2016/11/05 PHP
php输出形式实例整理
2020/05/05 PHP
javascript 构建一个xmlhttp对象池合理创建和使用xmlhttp对象
2010/01/15 Javascript
有关JavaScript的10个怪癖和秘密分享
2011/08/28 Javascript
JavaScript学习笔记(一) js基本语法
2011/10/25 Javascript
javascript实现原生ajax的几种方法介绍
2013/09/21 Javascript
jquery实现图片灯箱明暗的遮罩效果
2013/11/15 Javascript
jQuery 实时保存页面动态添加的数据的示例
2017/08/14 jQuery
JavaScript实现数组全排列、去重及求最大值算法示例
2018/07/30 Javascript
详解@angular/cli 改变默认启动端口两种方式
2018/11/29 Javascript
解决 window.onload 被覆盖的问题方法
2020/01/14 Javascript
解决Vue使用bus总线时,第一次路由跳转时数据没成功传递问题
2020/07/28 Javascript
[01:34]DOTA2 7.22版本新增神杖效果一览(敏捷英雄篇)
2019/05/28 DOTA
python difflib模块示例讲解
2017/09/13 Python
Python 读写文件的操作代码
2018/09/20 Python
对python3中pathlib库的Path类的使用详解
2018/10/14 Python
Python subprocess库的使用详解
2018/10/26 Python
python3 小数位的四舍五入(用两种方法解决round 遇5不进)
2019/04/11 Python
python字符串分割及字符串的一些常规方法
2019/07/24 Python
django自带调试服务器的使用详解
2019/08/29 Python
关于pycharm中pip版本10.0无法使用的解决办法
2019/10/10 Python
opencv3/C++实现视频读取、视频写入
2019/12/11 Python
python网络编程之五子棋游戏
2020/05/14 Python
Python 实现微信自动回复的方法
2020/09/11 Python
python em算法的实现
2020/10/03 Python
一篇文章带你学习CSS3图片边框
2020/11/04 HTML / CSS
巴西最大的巴士票务门户:Quero Passagem
2020/11/21 全球购物
生物医学工程专业学生求职信范文分享
2013/12/14 职场文书
管理信息系学生的自我评价
2014/01/11 职场文书
护理专业求职信
2014/06/15 职场文书
酒店总经理岗位职责范本
2014/08/08 职场文书
2014年法院工作总结
2014/11/24 职场文书
公司员工宿舍管理制度
2015/08/07 职场文书