Python做图像处理及视频音频文件分离和合成功能

作者:陆壹爵爷 时间:2022-07-31 14:58:05 

一、简介

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')

来源:https://blog.csdn.net/Tong_T/article/details/92794314

标签:python,视频,音频,分离,合成
0
投稿

猜你喜欢

  • Windows 系统下的 Git 2.7 最新下载及安装教程图文详解

    2022-02-07 01:08:47
  • 深入了解和应用Python 装饰器 @decorator

    2024-01-02 09:20:05
  • Go语言中slice作为参数传递时遇到的一些“坑”

    2023-08-05 02:05:12
  • 人工智能学习PyTorch实现CNN卷积层及nn.Module类示例分析

    2021-10-11 21:14:42
  • 如何在Python中将字符串转换为集合

    2023-08-26 07:31:11
  • 如何在社区建立一个寻呼台?

    2009-11-08 18:59:00
  • asp更改Windows2000管理者密码?

    2010-06-26 11:03:00
  • 分享18个最佳代码编辑器/IDE开发工具

    2022-03-26 01:31:24
  • 动态生成的IFRAME设置SRC时的,不同位置带来的影响

    2008-03-06 13:56:00
  • 分享css处理浏览器兼容问题上的小技巧

    2008-02-03 14:41:00
  • 使用Python三角函数公式计算三角形的夹角案例

    2022-12-06 04:09:33
  • Python实现的matplotlib动画演示之细胞自动机

    2022-05-23 15:49:09
  • Django使用消息提示简单的弹出个对话框实例

    2023-02-08 06:23:07
  • pandas分别写入excel的不同sheet方法

    2022-08-27 04:15:03
  • Python处理时间戳和时间计算等的脚本分享

    2021-12-20 10:36:50
  • Python命名空间及作用域原理实例解析

    2021-05-10 17:57:40
  • 解决import tensorflow as tf 出错的原因

    2023-06-26 23:53:21
  • python运用sklearn实现KNN分类算法

    2022-12-04 03:53:19
  • Python 循环语句之 while,for语句详解

    2024-01-01 02:20:50
  • 修正IE6不支持position:fixed的bug[译]

    2009-08-01 12:44:00
  • asp之家 网络编程 m.aspxhome.com