スポンサーサイト

 --, -- --:--
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

複数クリップの差分マスク生成

 01, 2015 07:11
表題通り。
要 yrangemask.dll

459.png

diffmask_code.png


function create_diffmask(clip v01, clip v02, clip "v03", clip "v04", clip "v05", clip "v06", clip "v07", clip "v08", clip "v09", clip "v10", clip "v11", clip "v12", bool "trans", bool "expand"){
v03=default(v03,blankclip(v01,length=-1))
v04=default(v04,blankclip(v01,length=-1))
v05=default(v05,blankclip(v01,length=-1))
v06=default(v06,blankclip(v01,length=-1))
v07=default(v07,blankclip(v01,length=-1))
v08=default(v08,blankclip(v01,length=-1))
v09=default(v09,blankclip(v01,length=-1))
v10=default(v10,blankclip(v01,length=-1))
v11=default(v11,blankclip(v01,length=-1))
v12=default(v12,blankclip(v01,length=-1))
trans=default(trans,false)
expand=default(expand,true)

maskA=diff_mask(v01,v02)
maskB=v03.framecount!=-1&&v04.framecount!=-1?diff_mask(v03,v04):BlankClip(v01,length=-1)
maskC=v05.framecount!=-1&&v06.framecount!=-1?diff_mask(v05,v06):BlankClip(v01,length=-1)
maskD=v07.framecount!=-1&&v08.framecount!=-1?diff_mask(v07,v08):BlankClip(v01,length=-1)
maskE=v09.framecount!=-1&&v10.framecount!=-1?diff_mask(v09,v10):BlankClip(v01,length=-1)
maskF=v11.framecount!=-1&&v12.framecount!=-1?diff_mask(v11,v12):BlankClip(v01,length=-1)

mask=mt_logic(maskA,maskB,mode="or")
mask=maskC.framecount!=-1?mt_logic(mask,maskC,mode="or"):mask
mask=maskD.framecount!=-1?mt_logic(mask,maskD,mode="or"):mask
mask=maskE.framecount!=-1?mt_logic(mask,maskE,mode="or"):mask
mask=maskF.framecount!=-1?mt_logic(mask,maskF,mode="or"):mask

mask=expand?mask.mt_expand(mode="both",Y=3,U=2,V=2):mask

return trans?mask:no_trans(mask)
}

function diff_mask(clip a, clip b){
mt_makediff(a,b,U=-128,V=-128)
ab=mt_merge(MaskToClip(last),BlankClip(last,color=$ffffff),last.yrangemask(0,0,122,0),luma=true)
mt_makediff(b,a,U=-128,V=-128)
ba=mt_merge(MaskToClip(last),BlankClip(last,color=$ffffff),last.yrangemask(0,0,122,0),luma=true)
return mt_logic(ab,ba,mode="or")
}

function no_trans(clip c){
return mt_merge(c,BlankClip(c,color=$000000),c.yrangemask(00,0,143,0),luma=true)
}

function MaskToClip(clip m){
mt_merge(BlankClip(m,color=$ffffff).ConvertToYV12(),m,BlankClip(m,color=$ffffff).ConvertToYV12())
return last
}





©PEACH-PIT・集英社/ローゼンメイデン製作委員会

スポンサーサイト

COMMENT - 0



WHAT'S NEW?

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。