gpt4 book ai didi

python - 如何在 moviepy 中使用 png 蒙版?

转载 作者:太空宇宙 更新时间:2023-11-03 16:50:49 35 4
gpt4 key购买 nike

我正在尝试将蒙版与 moviepy 一起使用。

我想使用这样的图像文件( /image/fFu8H.jpg )并将其作为蒙版覆盖在视频之上,以便只有图像的黑色部分在视频中是透明的。

当我使蒙版图像的大小与视频完全相同时,我可以使其工作,但我不知道如何使其与较小的蒙版图像一起使用。我想获取给定的小蒙版图像,并将其放置到视频上(此外,我实际上想获取此蒙版图像并同时将其作为几个不同位置的蒙版放入视频中)。

我在下面添加了我尝试执行此操作的代码以及我收到的错误。感谢任何帮助(或者只是一个显示如何使用电影蒙版的简单示例的链接)。谢谢!

from moviepy.editor import VideoFileClip, concatenate_videoclips, ImageClip, vfx, AudioFileClip, \
concatenate_audioclips, CompositeAudioClip, ColorClip, CompositeVideoClip, VideoClip

import random


if __name__ == '__main__':

DEFAULT_CLIP_HEIGHT = 720
DEFAULT_CLIP_WIDTH = 1280

color_clip = ColorClip(size=(DEFAULT_CLIP_WIDTH, DEFAULT_CLIP_HEIGHT), col=((0, 0, 255)))
color_clip = color_clip.set_duration(15)
color_clip = color_clip.set_fps(DEFAULT_FPS)

color_clip2 = ColorClip(size=(DEFAULT_CLIP_WIDTH, DEFAULT_CLIP_HEIGHT), col=((255, 0, 0)))
color_clip2 = color_clip2.set_duration(15)
color_clip2 = color_clip2.set_fps(DEFAULT_FPS)

rounded_border_path = os.path.join(PROJECT_PATH, 'black_on_white_small.png')
mask_clip = ImageClip(rounded_border_path)
mask_clip = mask_clip.set_duration(10)
mask_clip = mask_clip.set_fps(DEFAULT_FPS)
mask_clip = mask_clip.set_position(('center', 'center'))

comp_clip = CompositeVideoClip([mask_clip], bg_color=(255, 255, 255),
size=(DEFAULT_CLIP_WIDTH, DEFAULT_CLIP_HEIGHT), ismask=True)

color_clip.mask = comp_clip

comp_clip = CompositeVideoClip([color_clip2, color_clip], size=(DEFAULT_CLIP_WIDTH, DEFAULT_CLIP_HEIGHT))

o_path = os.path.join(PROJECT_PATH, 'comp_color.mp4')
comp_clip.write_videofile(o_path, fps=DEFAULT_FPS, codec='libx264')

产生错误: File "/Users/maxfowler/Dropbox/desktop/cs/upwork_montage/custom_moviepy/moviepy/video/compositing/CompositeVideoClip.py", line 110, in make_frame
f = c.blit_on(f, t)
File "/Users/maxfowler/Dropbox/desktop/cs/upwork_montage/custom_moviepy/moviepy/video/VideoClip.py", line 570, in blit_on
return blit(img, picture, pos, mask=mask, ismask=self.ismask)
File "/Users/maxfowler/Dropbox/desktop/cs/upwork_montage/custom_moviepy/moviepy/video/tools/drawing.py", line 43, in blit
1.0 * mask * blitted + (1.0 - mask) * blit_region)
ValueError: operands could not be broadcast together with shapes (720,1280,9) (720,1280,3)

最佳答案

您似乎正在使用整个图像(高 x 宽 x 3)作为蒙版。 MoviePy 中的蒙版必须为(高 x 宽 x 1),浮点值介于 0(透明)和 1(完全不透明)之间。

这有帮助吗?

关于python - 如何在 moviepy 中使用 png 蒙版?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35857005/

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