MoviePy - 中文文档4-MoviePy实战案例-追踪人脸,打马赛克

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ucsheep/article/details/82788067

追踪人脸,打马赛克

首先,我们需要先追踪到人脸,即,获得两个函数fxfy就像(fx(t), fy(t))获得某时刻t脸的中心的坐标,通过manual_tracking,这个功能很快就实现了。然后我们就需要把脸的中心为半径的一部分区域做模糊化处理。

import pickle

from moviepy.editor import *
from moviepy.video.tools.tracking import manual_tracking, to_fxfy


# 加载clip,截取一个卓别林电影的6‘51-7’01之间的片段
clip = VideoFileClip("../../videos/chaplin.mp4").subclip((6,51.7),(7,01.3))

# 手动跟踪标记头部

# 下面的三行代码,手动跟踪,然后把结果保存进文件,应该在一次运行之后就完成量跟踪标记
# 注意:我们保存的格式是一个(ti,xi,yi)list,不是函数fx和fy

#txy, (fx,fy) = manual_tracking(clip, fps=6)
#with open("../../chaplin_txy.dat",'w+') as f:
#    pickle.dump(txy)



# 已经完成手动跟踪人脸并标记的情况下
# fx(t),fy(t)的形式加载跟踪标记的数据

with open("../../chaplin_txy.dat",'r') as f:
    fx,fy = to_fxfy( pickle.load(f) )


# 在clip中,模糊卓别林的头部

clip_blurred = clip.fx( vfx.headblur, fx, fy, 25)


# 生成文本,灰色背景

txt = TextClip("Hey you ! \n You're blurry!", color='grey70',
               size = clip.size, bg_color='grey20',
               font = "Century-Schoolbook-Italic", fontsize=40)
               
               
# 把卓别林的vedio clip和TextClip连接起来,添加audio clip

final = concatenate_videoclips([clip_blurred,txt.set_duration(3)]).\
          set_audio(clip.audio)

# 将比特率修改为3000k是为了画面不至于太丑

final.write_videofile('../../blurredChaplin.avi', bitrate="3000k")

猜你喜欢

转载自blog.csdn.net/ucsheep/article/details/82788067