Как объединить несколько изображений в одно с помощью ImageMagick?

Как объединить несколько изображений в одно с помощью ImageMagick?
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 усредняет два изображения одновременно: текущее рассматриваемое изображение и результат предыдущего усреднения. Затем он переходит к следующему изображению.

Таким образом, вместо того, чтобы все изображения в последовательности имели одинаковый вес, более поздние изображения имеют больший вес. Это не дает результата, который все, использующие эту опцию, интуитивно ожидали бы. Также есть проблема, что все изображения должны быть загружены в память.

Решением обеих проблем является скрипт для рекурсивного вызова convert для пар изображений, например:

#!/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

С форума ImageMagick:

convert darky1.jpg darky2.jpg lighty1.jpg lighty2.jpg -evaluate-sequence Mean avg.ppm

Будьте осторожны: это приведет к одновременной загрузке всех изображений в память.

Связанный контент