Сравните два изображения с ImageMagick

Я пытаюсь взять два изображения и сравнить их с помощью ImageMagick.

Я хочу узнать, близки ли изображения к одному и вернуть номер, который будет храниться в переменной php и отображаться на экране моего браузера.

Моя учетная запись хостинга с bluehost, и я протестировал ее, изменив размер изображения, и ImageMagick установлен и запущен. Следующий код работает здесь: http://zing-cards.com/imagetest2.php

<?php $photo="/home/tcsdesig/public_html/zing/flower.jpg"; $cmd = "/usr/bin/convert $photo -thumbnail 100x100 JPG:-"; header("Content-type: image/jpeg"); passthru($cmd, $retval); ?> 

Я понимаю, что следующий код командной строки (согласно этому сообщению ) должен получить результаты в числовом формате:

 compare -metric RMSE first.png second.png NULL: 

Вот мой код:

 <?php $photoPath1="/home/*username*/public_html/flower.jpg"; $photoPath2="/home/*username*/public_html/flower1.jpg"; $cmd = "/usr/bin/compare -metric RMSE $photoPath1 $photoPath2 NULL:"; exec($cmd); ?> 

Как сделать это значение в моем браузере?

Помимо приведенного выше кода, я попытался:

 $result = exec($cmd); echo $result; 

Из того, что я понимаю, это должно отображать небольшое число (поскольку изображения равны), и если я использую совершенно разные изображения, они должны отображать большое число, но я не получаю никаких результатов.

Здесь, если я это сделаю

 <?php $photoPath1="/home/*username*/public_html/flower.jpg"; $photoPath2="/home/*username*/public_html/flower1.jpg"; $result = exec("/usr/bin/compare -metric RMSE /usr/share/pixmaps/faces/dice.jpg /usr/share/pixmaps/faces/fish.jpg NULL:"); echo $result; ?> 

я получил

 20455.4 (0.312129) 

Это то, чего я ожидаю, потому что изображения совершенно разные …

Я предполагаю, что вы должны попробовать compare в командной строке, заранее …

Например, если у вас нет compare установленного в вашей системе, вы не получите никаких результатов …

ОБНОВЛЕНИЕ : Чтобы продолжить расследование в случае постоянного отсутствия выхода, выполните следующие действия:

 <?php $photoPath1 = "/home/*username*/public_html/flower.jpg"; $photoPath2 = "/home/*username*/public_html/flower1.jpg"; $compareCommand = "/usr/bin/compare"; if (!is_executable($compareCommand)) die("Sorry, can't execute $compareCommand!"); $output = shell_exec("$compareCommand -metric RMSE $photoPath1 $photoPath2 NULL: 2>&1"); print $output; ?> 

ОБНОВЛЕНИЕ 2

Отвечая на вопрос ОП в комментарии:

На странице конвертирования man не указано, если и как можно печатать только процент ошибки RMSE …

Вы можете добавить (например) a | sed -e 's/.*(\(.*\))/\1/g' | sed -e 's/.*(\(.*\))/\1/g' , чтобы просто сохранить процент ошибки RMSE …