Redo high_five movie with correlate.py, do tank_battle movie with correlate.py, rough...
[stop_motion.git] / mean.py
diff --git a/mean.py b/mean.py
index 9340aed..bc3b3bc 100755 (executable)
--- a/mean.py
+++ b/mean.py
@@ -5,16 +5,24 @@ import numpy
 import sys
 
 if len(sys.argv) < 3:
-  print(f'usage: {sys.argv[0]:s} in1.jpg ... inN.jpg out.jpg')
+  print(f'usage: {sys.argv[0]:s} in1.png ... inN.png out.png')
   sys.exit(1)
-in_jpgs = sys.argv[1:-1]
-out_jpg = sys.argv[-1]
+in_pngs = sys.argv[1:-1]
+out_png = sys.argv[-1]
 
 images = []
-for in_jpg in in_jpgs:
-  print('read', in_jpg)
-  images.append(gamma.read_image(in_jpg))
+for in_png in in_pngs:
+  print('read', in_png)
+  images.append(gamma.read_image(in_png))
+images = numpy.stack(images, 0)
 
-image = numpy.mean(numpy.stack(images, 0), 0)
-print('write', out_jpg)
-gamma.write_image(out_jpg, image)
+image = numpy.concatenate(
+  [
+    numpy.mean(images[:, :, :, :3], 0), # mean on RGB channels
+    numpy.product(images[:, :, :, 3:], 0) # and-operation on alpha channel
+  ],
+  2
+)
+
+print('write', out_png)
+gamma.write_image(out_png, image)