快被vivtc搞疯了
发表于 : 2019-05-30 20:57
不知道为什么vivtc标记的combed经常是错的,每集都要切很多份手工选择是不是要做后处理,气的我写了下面这个东西
我觉得更根本的方法是通过vthresh之类的设定来提高识别率,但是又不知道该怎么设置。或者是不是有更好的滤镜。
input_clip = mvf.Depth(src, depth=16)
src= core.vivtc.VFM(src,1,clip2=input_clip,cthresh=10)
def zzivtc(src,range,mode):#手动后处理
if len(range)-len(mode)!=1:
return src[1]#单独输出第一帧,用来报异常
else:
i=0
srcs=[]
while i<len(range)-1:
mode=0:#不该反交错的反交错了,这种跳过反交错步骤直接输出即可
if mode==0:
srcs.append(core.std.Trim(src,range,(range[i+1]-1)))
mode=1:#该反交错的没有反交错,强制使用nnedi3反交错
elif mode==1:
srcs.append(core.std.Trim(src,range,(range[i+1]-1)).nnedi3.nnedi3(field=1,combed_only=False))
mode=2:#程序判断正确,使用带判断的nnedi3反交错
elif mode==2:
srcs.append(core.std.Trim(src,range,(range[i+1]-1)).nnedi3.nnedi3(field=1,combed_only=True))
else:
return src[10]#单独输出第10帧,用来报异常
i=i+1
srcs.append(core.std.Trim(src,range,range))
src=core.std.Splice(srcs)
return src
src=zzivtc(src,[0,11005,42555],[1,2])
我觉得更根本的方法是通过vthresh之类的设定来提高识别率,但是又不知道该怎么设置。或者是不是有更好的滤镜。