116
Python 在视频处理中的应用
刘焱昕
(山西财经大学,山西太原030006)
摘要:随着Python 语言的日渐成熟,Python 在实际生活中的应用变得越来越广泛,在处理视频时,使用Python 语言进行
处理则更为简便。通过Python 调用现有的视频处理库可以简单、便利的对视频进行提取、编辑、处理,从而实现目标效果。文章对使用Python 进行视频处理时所需的常用的视频处理库OpenCV,MoviePy 进行简单介绍,并通过MoviePy 库具体处理视频为例来展示Python 在视频处理中的应用。关键词:Python ;视频处理;MoviePy 中图分类号:TN941文献标识码:A 文章编号:1673-1131(2019)01-0116-02
0引言
由于信息技术的发展,Python 语言发展的十分迅速,使用Python 语言的应用也遍布各个方面。Python 是1991年公开的一种面向对象的解释型程序设计语言,Python 语言语法清晰、简洁,程序动态指定变
量类型,灵活方便,并且有着众多强大的类库,可以与其他语言进行结合。实现目标任务时使用Python 比起其他语言更为简洁,需要的代码较少。因此越来越多的人选择Python 语言来进行开发。
在众多的开发应用中,视频处理占据了重要的地位。如今很多人对视频学习、处理有了极大的兴趣。通过对视频学习,使用视频处理库对视频进行一定的处理,可以从视频中提取出目标信息,通过对目标信息的学习再进行下一步的研究。除了提取视频中有用的信息外,还可以对视频进行处理加工,用户可能对现有的视频效果不满足,希望可以在原始视频的基础上进行添加修改或者生成自定义的视频,使用一定的视频处理库,可以实现目标效果。视频是由图像构成的,对视频的处理进行转换就是将视频提取为以帧为单位的图像,然后
对具体帧的图像进行学习处理。陶然[1]使用ffmpeg 技术实现视频合成,OpenCV 录制视频,实现了手语合成系统;陈之尧[2]和周宇[3]使用Python 调用OpenCV 库对图像分割技术进行研究;张永付[4]等结合Python 和OpenCV 对硬币图像进行学习识别,可以较好地对硬币进行区分。在视频处理中,常用的视频处理库有OpenCV 和MoviePy [5],本文介绍这两种库的应用以及优缺点,并以MoviePy 为例,使用Python 语言进行实验,在实例视频中进行部分追踪、模糊处理并观察实验结果。
1视频处理基础
对视频处理首先要清楚处理的视频对象的类型,所以首先介绍常用的视频分类,在此基础上学习常用
的视频处理库。
学python看谁的视频比较好1.1常用的视频分类
常见的视频可以分为影像视频和流式视频,A VI 格式视频是将视频和音频进行混合播放,图像质量较好,可以跨平台使用,但是视频体积大,而且可能由于压缩标准和版本的不同,会影响视频的播放,应用最为广泛;MPEG 是一系列的视频格式,促进了VCD 等应用的发展。WMV 是在Internet 上实时传2.4配套表状态转换
配套表的状态有未配套、配套中,已完成和已中止4种状态,未配套为该配套表中没有任何元器件进行出库,配套中指有且仅有部分元器件已出库,已完成指配套表中所有元器件均已出库,已中止指由于生产中断人工手动结束的配套表。配套表占用是基于未配套和配套中的配套表进行的。若某张配套表单据存在库存占用,此时手动对配套表进行状态转换,如中止,此时系统会自动解除被该单据占用的元器件。
2.5
库存出库
图1预占用示例图
在完成正式的占用后,该元器件即被该配套表占用,其他配套表出库需要此物料时该元器件的可用数量为库存数减去占用数。若某张配套表单据存在库存占用,此时生产领料单出库时需要参照这张配套表,那么系统会自动将该单据占用的物料进行出库。也可点击占用页面直接生成出库单进行出库。本方法已在机载航空电子单位进行了成功的使用,占用示例显示如图1。
3结语
本文针对某航空机载电子研究所产品生产实际工作需要,
提出了一种基于配套表元器件预先占用的方法,实现了对产品生产所需的元器件预先占用的控制,同时能够根据生产的计划调整配套的优先级,及时控制所需的资源,并将生产所需的元器件缺件提前反应,为采购部门提供准确的数据支持,在确保重要产品优先生产的同时提高了产品的按时交付率,提升了企业的市场竞争能力。元器件预先占用方法同样适用于库房中其他物料的占用。参考文献:[1]
姚菲.先进的元器件优选控制方式在飞机研制中的应用[J ].现代制造工程,2016(4):57-60.
[2]孙文智,陈宗利,张军.一种元器件经济性选用的方法应用
研究[J ].信息通信,2018(11):261-262.
作者简介:陈宗利(1986-),男,工程师,研究方向:
信息化技术。
播视频格式,可扩充和伸缩。3GP是3G流媒体主要选择的视频编码格式,在手机中使用较多;FLV视频文件体积小,加载速度快,在网络上可以较好的使用;F4V的出现,使得视频变得更小更清晰,不需要进行转换就可以播放,逐渐的取代FLV。1.2常用的视频处理库
(1)OpenCV。OpenCV是一个由C++编写而成的可以跨平台使用的开源的视觉库,用户可以使用各种语言包括Python 编写的接口对OpenCV进行使用。使用OpenCV可以在视频中对运动物体进行追踪、进行越线、越界检测,对视频进行去雾、去模糊等处理。
使用Python语言可以简单的调用OpenCV进行使用,使用方便简单,在机器学习和视频领域中Python发展比较迅速,出现了大量的基于Python的可用库,并且在具体调试、可视化时也很方便。但是与传统的OpenCV一样遇到了文档不完善的问题,特别是Python的情况下,缺乏技术支持,运行程序速度较慢,而且如果根据用户的需求进行修改,就得修改C++文件,进行拓展比较麻烦。
(2)MoviePy。MoviePy是一个可以对视频进行编辑的Py-thon库,可以进行剪切、连接、插入标题、视频混合、视频处理、创建自定义效果等操作。
使用MoviePy可以使用复杂的方式对许多的视频进行处理,对Web服务器自动生成GIFs和视频;执行较为复杂的任务,将文字插入视频,制作字幕,对视频进行剪切,实现现有视频编辑无法实现的个性化的视频效果。还可以在Matplotlib,Mayavi 等库生成的图片的基础上创建动画。使用MoviePy库处理
视频,代码简单直观,便于学习。处理起来十分的灵活,便于控制。
在某些场景中,MoviePy的使用也有一定的局限性,这时使用MoviePy并不是最好的选择。例如可以对视频以帧为单位进行分析,使用imageio,OpenCV就可实现,或者仅仅需要把一些图片转为视频时直接使用ffmpeg比MoviePy更加高效。MoviePy不能对实时视频数据进行处理,例如不能处理从摄像头获取的视频,并不是特定为实现连续帧的处理所设计,为保证视频稳定性则需要别的软件。同时处理的视频源数量也有一定的限制,数量超过100后可能会出现内存问题。
2MoviePy具体实现追踪目标模糊处理
2.1实验介绍
实验使用Python语言通过调用MoviePy对MPEG编码的mp4格式的视频进行目标对象追踪模糊处理,并观察处理结果。实验采用的视频是在某教室拍摄的一个10s的mp4格式的视频,目标对象是视频中右上角出现的音响,实验目的是对视频中的目标对象进行追踪模糊。
2.2具体过程
首先对目标视频中移动的事物进行手动标记,视频按照一定帧数提取帧,通过鼠标左键点击目标对象,将整个视频中的目标对象的时间和横纵坐标保存,方便之后的提取。manual_ tracking(clip,fps=5,
savefile=""),clip为目标视频,fps为一秒内帧数,帧数是一秒内传输的图片的数量,就是每秒钟可以刷新的次数,用fps表示,每一帧都是具体的图像,fps越大,图片显示的越连续,动画效果更好,图片切换的速度人无法识别时,就像在看连续的视频。在实验中,通过设置fps=5,也就是视频一秒钟暂停5次,运行获取手动标记程序,视频显示为暂停状态,显示为当前帧,使用鼠标左键点击目标对象后,视频便会跳到下一帧,直到将设定的所有帧都标记后,视频关闭,生成了记录文件txt,savefile=””将手动标记的目标对象的时间和横纵坐标保存到””中。
运行程序读取保存txt文件,track1=Trajectory.load_list(' ')使用load_list()方法读取之前保存的数据,track1[0] .xx为横坐标,track1[0].yy为纵坐标,track1[0].tt为时间,在给定的坐标处以一定长度为半径画圆,然后将这个圆放在目标对象上,随着目标运动,坐标也发生变化,模糊的圆也会跟随目标移动,从而实现模糊目标效果。Headblur()方法返回一个移动的模糊图形,直接调用方法会报错,所以对方法进行修改,clip=headblur(clip,50),将原始的视频数据进行处理,调用修改后的headblur()函数进行模糊,clip为处理前的视频,50为设置的模糊圆的半径,x,y=get_f(t),get_f(t)函数根据传入的时间,返回目标对象在该时间时的坐标,把根据时间变化的坐标按一定的顺序传入,在之前保存的特定时间处便会对获取的图像进行模糊,然后获得模糊后的视频。
2.3实验结果及分析
实验结束后,得到一个经过模糊处理后的视频,观察处理后的视频发现,基本可以实现将目标对象实现追踪模糊效果。
截取视频中同一时间的图像来展示模糊结果。
上图左边为原始视频中的某一帧,右边是经过追踪模糊处理后的视频某一帧,可以清楚的看到把视频中的目标音响进行了模糊处理。但是设置帧数fps=5时,模糊图形移动时会发生抖动,于是观察目标视频的详细信息,得知视频帧数为30,对参数fps进行修改,重新设置为30,再进行实验后发现模糊图形明显比之前移动时较为稳定。
3结语
本文在学习常用的视频处理库的基础上,以追踪模糊为例,使用Python语言调用视频处理库MoviePy对具体视频进行处理,基本实现了对视频目标对象进行追踪模糊的效果,实现代码简洁,使用操作简单。除此之外,使用Python对视频还可以进行很多的个性化处理,在今后的实际应用中进行探索。
参考文献:
[1]陶然.手语合成系统的研究与实现[D].北京邮电大学,2018.
[2]陈之尧.基于OpenCV-Python的图像分割技术的设计与
应用研究[J].中国新通信,2018,20(19):89.
[3]周宇.基于OpenCV-Python的图像分割技术的设计和应
用[J].电子世界,2018(3):116-117.
[4]张永付,张鹏.基于Python的硬币识别系统设计与实现[J].
软件导刊,2017,16(10):129-131+2.
[5]github/zulko/moviepy.
作者简介:刘焱昕(1995-),女,山西长治人,山西财经大学,本科,计算机应用技术专业。
信息通信刘焱昕:Python在视频处理中的应用
117
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论