2020年9月5日土曜日

MoviePyとscikit-imageで動画画面に半透明の星形を描画する

MoviePyとscikit-imageで動画画面に半透明の星形を描画するには、polygon関数とCompositeVideoClipを使用します。

サンプルコード

以下のサンプルコードでは、scikit-imageのpolygon関数で星形を描画し、CompositeVideoClipを使用して動画と重ね合わせます。
from moviepy.editor import *
from skimage.draw import *
import numpy as np

clip1 = VideoFileClip("hydrangea.mp4")

img = np.zeros((clip1.h, clip1.w, 4), dtype=np.uint8)
cx = clip1.w/2
cy = clip1.h/2
points = 5
rad = 2*np.pi/points
halfrad = rad/2
outer_radius = clip1.h*0.4
inner_radius = clip1.h*0.2
starx = []
stary = []
for pl in range(points):
    starx.append(cx+np.cos(pl*rad-np.pi/2)*outer_radius)
    starx.append(cx+np.cos(pl*rad+halfrad-np.pi/2)*inner_radius)
    stary.append(cy+np.sin(pl*rad-np.pi/2)*outer_radius)
    stary.append(cy+np.sin(pl*rad+halfrad-np.pi/2)*inner_radius)

rr, cc = polygon(stary, starx)
img[rr, cc] = (255,255,192,128)
clip2 = ImageClip(img).set_duration(clip1.duration)
clip1t = CompositeVideoClip([clip1, clip2])

clip1t.write_videofile("star.mp4")


〇元動画の画面

 

〇出力動画の画面

 

 〇scikit-imageインストール
MoviePyの他、仮想環境のフォルダに移動して以下のコマンドを実行します。

pipenv install scikit-image

関連情報

MoviePyのまとめ

・moviepyのホームページ
https://zulko.github.io/moviepy/

0 件のコメント:

コメントを投稿