сравнить изображение с помощью ImageMagick и получить только результат true / false 0/1 - PullRequest
0 голосов
/ 01 апреля 2020

Мы используем репозиторий git для снимков экрана, и всегда изображения помечаются как измененные git, но с применением метода fuzz изменений нет.

Я использую этот скрипт для сравнения изображений

do_compare()
{
     compare $color_flag $fuzz_flag $backgroundcolor_flag "$f1" "$f2" png:- | \
        montage -geometry +4+4 $backgroundcolor_flag "$f1" - "$f2" png:- >"$destfile" 2>/dev/null || true
}

но я хочу только знать, есть ли изменения в изображении, относительно fuzz , или нет.

У кого-то есть идеи, как это сделать?

1 Ответ

1 голос
/ 01 апреля 2020

Вы можете сделать это в командной строке ImageMagick на Unix, используя

compare -metric ae -fuzz XX% image1 image2 null: 2>&1


-metric ae, чтобы вернуть количество пикселей, которые не совпадают. Таким образом, если результат равен 0, то он полностью совпадает с указанным значением -fuzz.

Например, тестирование с fuzz = 0:

XX=0
test=`compare -metric ae -fuzz $XX% lena.png lena.jpg null: 2>&1`
if [ "$test" = "0" ]; then
echo "match"
else
echo "no match"
fi

no match


Тестирование с fuzz = 10 %:

XX=10
test=`compare -metric ae -fuzz $XX% lena.png lena.jpg null: 2>&1`
if [ "$test" = "0" ]; then
echo "match"
else
echo "no match"
fi

match
...