使用画笔特效,定格视频中的某一帧
这样的处理手法,会让一帧画面看起来像画一样:
- 用Sobel算法算出图像中的边缘,我们就获得了像手绘的黑白画面
- 图片矩阵相乘,获得比较亮的画面,再叠加第一步获得的轮廓
最终的clip包含三级:处理之前的部分,处理的部分,处理过后的部分。处理的部分,是按照以下三步走来获得的。
- 定格一帧画面,制作成手绘风格,作为一个clip
- 添加一个写着[Audrey]的text clip到第一步的clip
- 把的以上得到的clip覆盖在原始的clip上,让后让它用渐入和渐出的效果显示和移除显示
下面是代码
- """ 需要安装1 scikit-image (for vfx.painting) """
-
- from moviepy.editor import *
-
- # WE TAKE THE SUBCLIPS WHICH ARE 2 SECONDS BEFORE & AFTER THE FREEZE
-
- charade = VideoFileClip("../../videos/charade.mp4")
- tfreeze = cvsecs(19.21) # Time of the freeze, 19'21
-
- # when using several subclips of a same clip, it can be faster
- # to create 'coreaders' of the clip (=other entrance points).
- clip_before = charade.coreader().subclip(tfreeze -2,tfreeze)
- clip_after = charade.coreader().subclip(tfreeze ,tfreeze +2)
-
-
- # 被定格的一帧画面
- im_freeze = charade.to_ImageClip(tfreeze)
- painting = (charade.fx( vfx.painting, saturation = 1.6,black = 0.006)
- .to_ImageClip(tfreeze))
- #签名的TextClip
- txt = TextClip('Audrey',font='Amiri-regular',fontsize=35)
-
- painting_txt = (CompositeVideoClip([painting,txt.set_pos((10,180))])
- .add_mask()
- .set_duration(3)
- .crossfadein( 0.5)
- .crossfadeout( 0.5))
-
- # FADEIN/FADEOUT EFFECT ON THE PAINTED IMAGE
-
- painting_fading = CompositeVideoClip([im_freeze,painting_txt])
-
-
- final_clip = concatenate_videoclips([ clip_before,
- painting_fading.set_duration(3),
- clip_after])
-
- final_clip.write_videofile('../../audrey.avi',fps=charade.fps,
- codec = "mpeg4", audio_bitrate="3000k")
一起交流,一起进步,群内提问答疑
QQ群:MoviePy中文 :819718037
文章知识点与官方知识档案匹配,可进一步学习相关知识
Python入门技能树首页概览333612 人正在系统学习中
评论记录:
回复评论: