gpt4 book ai didi

python - 如何将 gizeh 矢量动画叠加到具有透明度的电影视频上?

转载 作者:行者123 更新时间:2023-12-01 08:28:05 32 4
gpt4 key购买 nike

我不知道如何将 gizeh 动画叠加到视频上,以便矢量图形可见,但背景是透明的,以便视频在动画下方可见。我尝试了很多不同的方法,但似乎没有任何效果。我得到的只是完全隐藏底层视频的 gizeh 动画。

这是我最新的努力,只是想在视频上画一条红线,我尝试使用 mask_color vfx 方法创建一个使用 Surface bg_c​​olor 的蒙版,但它没有没有任何影响。

import gizeh
from moviepy.editor import *

def make_frame(t):
surface = gizeh.Surface(width=720, height=1280, bg_color=(0.5, 0.5, 0))
line = gizeh.polyline(points=[(0, 1180), (720, 1180)], stroke_width=3, stroke=(1, 0, 0))
line.draw(surface)
return surface.get_npimage()


original_clip = VideoFileClip("test_original_video.mp4")
graphics_clip = VideoClip(make_frame, duration=original_clip.duration)
masked_graphics_clip = vfx.mask_color(graphics_clip, [0.5, 0.5, 0])

final_clip = CompositeVideoClip(
[original_clip,
graphics_clip],
size=(720, 1280))

final_clip.write_videofile("test_output_video.mp4", fps=30))

如何定义和应用动画图形剪辑的蒙版?

最佳答案

Zulko,moviepy 和 gizeh 的作者,非常友善地帮助我找到了解决方案(完整详细信息请参见 https://github.com/Zulko/moviepy/issues/898)。

诀窍是:

  • 对图形和动画使用相同的 make_frame 函数。
  • 使用 transparent=True 选项返回 numpy 图像数组,该选项返回 RGB 值之后每个像素的不透明度值 [因此数组的形状为 (width, height, 4)]
  • 对于蒙版剪辑,对数组进行切片,使其仅使用不透明度值[给出形状为 (width, height, 1)]
  • 对于图形剪辑,对数组进行切片,使其仅使用 RGB 值[给出形状为 (width, height, 3)]
  • 将蒙版剪辑应用到图形剪辑

工作代码如下所示:


import gizeh
from moviepy.editor import *

def make_frame(t):
surface = gizeh.Surface(width=720, height=1280)
line = gizeh.polyline(points=[(0, 1180), (720, 1180)], stroke_width=10, stroke=(1, 0, 0))
line.draw(surface)
return surface.get_npimage(transparent=True)


original_clip = VideoFileClip("test_original_video.mp4")

graphics_clip_mask = VideoClip(lambda t: make_frame(t)[:, :, 3] / 255.0,
duration=original_clip.duration, ismask=True)
graphics_clip = VideoClip(lambda t: make_frame(t)[:, :, :3],
duration=original_clip.duration).set_mask(graphics_clip_mask)

final_clip = CompositeVideoClip(
[original_clip,
graphics_clip],
size=(720, 1280)
)

final_clip.write_videofile("test_output_video.mp4", fps=30)

关于python - 如何将 gizeh 矢量动画叠加到具有透明度的电影视频上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54092683/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com