| 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} ===") |
|
|