-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathYoloSeuil.vpy
88 lines (78 loc) · 3.03 KB
/
YoloSeuil.vpy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
FichierSource=r'Vidéo_Source.mkv'
DimensionCropBox=[1344,150] # Taille en largeur et hauteur de la CropBox délimitant les sous-titres à OCR.
HauteurCropBox=46 # Hauteur de la CropBox délimitant les sous-titres à OCR.
Supersampling=-1 # Facteur de supersampling (multiplication de la résolution de la vidéo). Mettre à -1 pour calculer le facteur automatiquement.
ModeU='sinc' # 'sinc' (2 taps, plus rapide), 'znedi3' (plus lent) ou 'waifu2x' (beaucoup plus lent), contrôle la méthode d'Upscale.
ModeS='L' # 'L' pour Luma, 'R' pour Rouge, 'B' pour Bleu ou 'G' pour Vert. Seuil à analyser.
Seuil=-1 # Seuil délimitant les sous-titres. Mettre à -1 pour chercher le seuil à l'aide de VapourSynth Editor.
import vapoursynth as vs
if ModeU=='znedi3':
import edi_rpow2 as edi
core=vs.core
Clip=core.ffms2.Source(source=FichierSource)
Clip=core.std.CropAbs(clip=Clip,width=DimensionCropBox[0],height=DimensionCropBox[1],left=int((Clip.width-DimensionCropBox[0])/2),top=Clip.height-HauteurCropBox-DimensionCropBox[1])
if ModeS=='L':
Clip=core.std.ShufflePlanes(clips=Clip,planes=0,colorfamily=vs.GRAY)
if Supersampling<0:
if Clip.width/Clip.height>16/9:
TargetRes=1920
CurrentRes=Clip.width
else:
TargetRes=1080
CurrentRes=Clip.height
if ModeU=='znedi3':
Ss=TargetRes/CurrentRes/1.125
else:
Ss=TargetRes/CurrentRes
elif Supersampling==0:
Ss=1
else:
Ss=Supersampling
if ModeU=='znedi3' and Ss!=1:
if Ss-int(Ss)>0:
Ss=int(Ss/2)*2+2
else:
Ss=int(Ss/2)*2
if Supersampling<0:
Ssbis=TargetRes/(CurrentRes*Ss)
else:
Ssbis=Supersampling/Ss
if Ss!=1:
if ModeU=='znedi3' or ModeU=='waifu2x':
if ModeU=='znedi3':
Clip=edi.znedi3_rpow2(clip=Clip,rfactor=Ss)
else :
Clip=core.fmtc.bitdepth(clip=Clip,bits=32)
Clip=core.w2xc.Waifu2x(clip=Clip,scale=Ss)
if Ssbis!=1:
Clip=core.fmtc.bitdepth(clip=Clip,bits=16)
else :
Clip=core.fmtc.bitdepth(clip=Clip,bits=8)
if Ssbis!=1:
Clip=core.fmtc.resample(clip=Clip,scale=Ssbis,kernel="sinc",taps=2)
Clip=core.fmtc.bitdepth(clip=Clip,bits=8)
else:
Clip=core.fmtc.resample(clip=Clip,scale=Ss,kernel="sinc",taps=2)
Clip=core.fmtc.bitdepth(clip=Clip,bits=8)
elif Clip.format.bits_per_sample!=8:
Clip=core.fmtc.bitdepth(clip=Clip,bits=8)
if ModeS=='R' or ModeS=='G' or ModeS=='B':
Clip=core.fmtc.resample(clip=Clip,css="444")
Clip=core.fmtc.matrix(clip=Clip,mat="709",col_fam=vs.RGB)
Clip=core.fmtc.bitdepth(clip=Clip,bits=8)
if ModeS=='R':
Clip=core.std.ShufflePlanes(clips=Clip,planes=0,colorfamily=vs.GRAY)
elif ModeS=='G':
Clip=core.std.ShufflePlanes(clips=Clip,planes=1,colorfamily=vs.GRAY)
else:
Clip=core.std.ShufflePlanes(clips=Clip,planes=2,colorfamily=vs.GRAY)
def remove_matrix(n,f):
fout = f.copy()
del fout.props._Matrix
return fout
Clip=core.std.ModifyFrame(clip=Clip,clips=Clip,selector=remove_matrix)
if Seuil>=0:
Clip=core.std.Binarize(clip=Clip,threshold=Seuil)
Crop=core.std.CropAbs(clip=Clip,width=Clip.width-20,height=Clip.height-20,left=10,top=10)
Rect=core.std.AddBorders(clip=Crop,left=10,right=10,top=10,bottom=10,color=255)
Rect.set_output()