#!/usr/bin/env python3
import sys,json
from pathlib import Path
import numpy as np
from PIL import Image
before,after,prefix=map(Path,sys.argv[1:])
a=np.array(Image.open(before).convert('RGB')).astype('int16');b=np.array(Image.open(after).convert('RGB')).astype('int16')
if a.shape!=b.shape:raise ValueError('Image dimensions differ')
delta=np.max(np.abs(a-b),axis=2)
counts={}
for tag,threshold in [('diff0',0),('diff10',25.5)]:
 mask=delta>threshold
 base=np.repeat((a.mean(axis=2)*.45+100).astype('uint8')[:,:,None],3,axis=2)
 base[mask]=[255,0,0]
 Image.fromarray(base).save(str(prefix)+'-'+tag+'.png')
 counts[tag]=int(mask.sum())
Path(str(prefix)+'-counts.json').write_text(json.dumps({'before':str(before),'after':str(after),'pixels':int(delta.size),'threshold10':'max channel absolute delta >25.5 (10% of 255)',**counts},indent=2))
print(counts)
