问题描述
我想将 Gizeh gif 用于我的具有透明背景的电影文件。 所以我的代码是这样剪的:
import gizeh
from moviepy.editor import *
W,H = 128,128 # width,height,in pixels
duration = 2 # duration of the clip,in seconds
def make_frame(t):
surface = gizeh.Surface(W,H)
radius = W*(1+ (t*(duration-t))**2 )/6
circle = gizeh.circle(radius,xy = (W/2,H/2),fill=(1,0))
circle.draw(surface)
return surface.get_npimage(transparent=True)
original_clip = VideoFileClip("movie.MOV")
graphics_clip_mask = VideoClip(make_frame,duration=duration,ismask=True)
graphics_clip = VideoClip(make_frame,duration=duration).set_mask(graphics_clip_mask)
final_clip = CompositeVideoClip(
[original_clip,graphics_clip]
)
final_clip.write_videofile("test_output_video.mp4")
我得到这样的错误:
~/opt/anaconda3/lib/python3.8/site-packages/moviepy/video/VideoClip.py in blit_on(self,picture,t)
562 pos = map(int,pos)
563
--> 564 return blit(img,pos,mask=mask,ismask=self.ismask)
565
566 def add_mask(self):
~/opt/anaconda3/lib/python3.8/site-packages/moviepy/video/tools/drawing.py in blit(im1,im2,mask,ismask)
45 mask = np.dstack(3 * [mask])
46 blit_region = new_im2[yp1:yp2,xp1:xp2]
---> 47 new_im2[yp1:yp2,xp1:xp2] = (1.0 * mask * blitted + (1.0 - mask) * blit_region)
48
49 return new_im2.astype('uint8') if (not ismask) else new_im2
ValueError: operands Could not be broadcast together with shapes (128,128,12) (128,4)
所以我在 ismask 函数上遇到了这个错误。因此,对于 this 参考,我使用 is_mark
我用 is_mark 剪下的第二个代码:
graphics_clip_mask = VideoClip(make_frame,is_mask=True)
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-13-b07f823671f0> in <module>
----> 1 graphics_clip_mask = VideoClip(make_frame,is_mask=True)
TypeError: __init__() got an unexpected keyword argument 'is_mask'
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)