Tracking and blurring someone’s face — MoviePy 1.0.1 documentation

# Tracking and blurring someone’s face

First we will need to track the face, i.e. to get two functions `fx` and `fy` such that `(fx(t),fy(t))` gives the position of the center of the head at time `t`. This will be easily done with manual_tracking. Then we will need to blur the area of the video around the center of the head.

    import pickle

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

    # LOAD THE CLIP (subclip 6'51 - 7'01 of a chaplin movie)
    clip = VideoFileClip("../../videos/chaplin.mp4").subclip((6,51.7),(7,01.3))

    # MANUAL TRACKING OF THE HEAD

    # the three next lines are for the manual tracking and its saving
    # to a file, it must be commented once the tracking has been done
    # (after the first run of the script for instance).
    # Note that we save the list (ti,xi,yi), not the functions fx and fy
    # (that we will need) because they have dependencies.

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

    # IF THE MANUAL TRACKING HAS BEEN PREVIOUSLY DONE,
    # LOAD THE TRACKING DATA AND CONVERT IT TO FUNCTIONS x(t),fy(t)

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

    # BLUR CHAPLIN'S HEAD IN THE CLIP

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

    # Generate the text, put in on a grey background

    txt = TextClip("Hey you ! \n You're blurry!", color='grey70',
                   size = clip.size, bg_color='grey20',
                   font = "Century-Schoolbook-Italic", fontsize=40)

    # Concatenate the Chaplin clip with the text clip, add audio

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

    # We write the result to a file. Here we raise the bitrate so that
    # the final video is not too ugly.

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