convert -average darky1.jpg darky2.jpg lighty1.jpg lighty2.jpg l.ppm
convert -average lighty1.jpg lighty2.jpg lighty1.jpg lighty2.jpg d.ppm
l.ppm 比 d.ppm 浅得多。图像的顺序很重要(但不应该)。
使用也一样evaluate-sequence mean
。
如何正确地做这件事?
答案1
只需使用图形魔法:gm convert -average *.JPG q.ppm
答案2
8 年过去了,这似乎仍然是一个问题,StackExchange 家族中还没有令人满意的答案。
从这篇博文:
ImageMagick 的 -average 运算符可同时对两幅图像进行平均:当前考虑的图像和上一次平均的结果。然后它继续处理下一幅图像。
因此,序列中的每一幅图像都具有相同的权重,而后面的图像具有更高的权重。这不会产生几乎所有使用此选项的人直观期望的结果。还有一个问题是所有图像都需要加载到内存中。
这两个问题的解决方案都是使用一个脚本来对图像进行递归调用转换,如下所示:
#!/bin/bash
i=0
for file in img*jpg; do
echo -n "$file.. "
if [ $i -eq 0 ]; then
cp $file avg.jpg
else
convert $file avg.jpg -fx "(u+$i*v)/$[$i+1]" avg.jpg
fi
i=$[$i+1]
done
答案3
convert darky1.jpg darky2.jpg lighty1.jpg lighty2.jpg -evaluate-sequence Mean avg.ppm
注意:这会立即将所有图像加载到内存中。