import os, numpy as np from PIL import Image kf="/workspace/q_kf/"; yel=blu=met=ok=0; n=0 for f in sorted(os.listdir(kf)): if not f.lower().endswith(('.png','.jpg','.jpeg')): continue a=np.array(Image.open(kf+f).convert('RGB')).astype(np.float32); n+=1 g=0.299*a[...,0]+0.587*a[...,1]+0.114*a[...,2] flags=[] mw=g>210 if mw.sum()>300: r,gg,b=a[...,0][mw].mean(),a[...,1][mw].mean(),a[...,2][mw].mean() yb=(r+gg)/2-b if yb>8: flags.append(f"WIT->GEEL({yb:.1f})"); yel+=1 md=(g>35)&(g<95) if md.sum()>500: r,gg,b=a[...,0][md].mean(),a[...,1][md].mean(),a[...,2][md].mean() bb=b-gg if bb>5: flags.append(f"UNIFORM->BLAUW({bb:.1f})"); blu+=1 mm=(g>80)&(g<160) if mm.sum()>1000: r,gg,b=a[...,0][mm],a[...,1][mm],a[...,2][mm] cv=float(np.std(r-gg))+float(np.std(b-gg)) if cv>12: flags.append(f"METAAL-VLEK({cv:.1f})"); met+=1 if flags and (yel+blu+met)<=14: print(f"{f}: {', '.join(flags)}") if not flags: ok+=1 print(f"\n=== {n} keyframes: wit->geel={yel}, uniform->blauw={blu}, metaal-vlek={met}, schoon={ok} ===")