def test_find_objects(filename, expected_screenpos):
    clip = ImageClip(filename)
    objects = find_objects(clip)

    assert len(objects) == len(expected_screenpos)
    for i, object_ in enumerate(objects):
        assert np.array_equal(object_.screenpos,
                              np.array(expected_screenpos[i]))
Exemple #2
0
    return lambda t: screenpos - 400 * v * d(t - 0.2 * i)


def vortexout(screenpos, i, nletters):  # noqa D103
    d = lambda t: max(0, t)  # damping
    a = i * np.pi / nletters  # angle of the movement
    v = rotMatrix(a).dot([-1, 0])
    if i % 2:
        v[1] = -v[1]
    return lambda t: screenpos + 400 * d(t - 0.1 * i) * rotMatrix(-0.2 * d(t) *
                                                                  a).dot(v)


# WE USE THE PLUGIN find_objects TO LOCATE AND SEPARATE EACH LETTER

letters = find_objects(cvc)  # a list of ImageClips

# WE ANIMATE THE LETTERS


def moveLetters(letters, funcpos):  # noqa D103
    return [
        letter.set_pos(funcpos(letter.screenpos, i, len(letters)))
        for i, letter in enumerate(letters)
    ]


clips = [
    CompositeVideoClip(moveLetters(letters, funcpos),
                       size=screensize).subclip(0, 5)
    for funcpos in [vortex, cascade, arrive, vortexout]
Exemple #3
0
from moviepy.editor import *
from moviepy.video.tools.segmenting import find_objects

# Load the image specifying the regions.
im = ImageClip("../../ultracompositing/motif.png")

# Loacate the regions, return a list of ImageClips
regions = find_objects(im)

# Load 7 clips from the US National Parks. Public Domain :D
clips = [
    VideoFileClip(n, audio=False).subclip(18, 22) for n in [
        "../../videos/romo_0004.mov",
        "../../videos/apis-0001.mov",
        "../../videos/romo_0001.mov",
        "../../videos/elma_s0003.mov",
        "../../videos/elma_s0002.mov",
        "../../videos/calo-0007.mov",
        "../../videos/grsm_0005.mov",
    ]
]

# fit each clip into its region
comp_clips = [
    clip.resize(r.size).with_mask(r.mask).set_pos(r.screenpos)
    for clip, r in zip(clips, regions)
]

cc = CompositeVideoClip(comp_clips, im.size)
cc.resize(0.6).write_videofile("../../composition.mp4")