То, что я пытаюсь выполнить на PHP с помощью GD или ImageMagick, выглядит следующим образом:
У меня есть одно большое изображение (скажем, 2000 х 2000 пикселей). Я хотел бы проверить, появляется ли второе более маленькое изображение (скажем, 50 х 50 пикселей) внутри большего изображения, и в каком проценте область соответствует. Так, например, есть 95% -ное совпадение меньшего изображения в этом месте на большом изображении.
Это возможно? Как это можно достичь?
Благодаря!!!!
Я быстро взглянул на ImageMagick и GD на PHP, и у них нет встроенного способа сделать это. Подход может заключаться в использовании ImageMagick для разделения большего изображения на более мелкие (того же размера, что и у меньшего), и начните сравнивать их с меньшим.
Я думаю, это будет очень медленно.
Вы можете сделать это с помощью imagemagick, если вы используете системный вызов в своем PHP-коде. Я не знаю, хотите ли вы попробовать это, но вот как это можно сделать:
<?php //set a bigger time out limit because comparison takes a while set_time_limit ( 275 ) ; //the bigger image $bigimage = "big.bmp"; //the smaller image $smallimage = "small.bmp"; //result image $resimg = "/tmp/similarity"; //system call $output = shell_exec("(compare -metric AE -subimage-search ".$bigimage." ".$smallimage." ".$resimg." > /dev/null) 3>&1 1>&2 2>&3"); //result is something like "0 @ 251,263" $res = explode("@",$output); if($res[0]==0) { echo "Perfect match<br/>"; $res = explode(",",$res[1]); echo "width: ".$res[0]; echo "<br/>"; echo "height: ".$res[1]; } else { echo "Not match"; } ?>
Я протестировал вышеуказанный код в linux box с XAMPP для Linux 1.7.3a и ImageMagick 6.7.1-0 2011-07-10 Q16.
Что касается сравнения, то я использую метрическую AE (Absolute Error), которая подсчитывает, сколько пикселей отличается. Результат печатается в поток ошибок (STERR). Подробнее о том, как искать изображения в виде изображения, можно найти здесь .
Удачи 🙂
Вот хороший ответ для C #: Как найти одно изображение внутри другого?
Хотя я уверен, что он может быть использован и для PHP, потому что это всего лишь общий алгоритм, это довольно плохая идея использовать PHP для сравнения изображений.
Также обратитесь к статье соответствия шаблону Wikipedia.
ОК. Если у вас $ BigImage и $ SmallImage.
И вы делаете $ Final изображение на $ большие и маленькие изображения. Затем вы можете проверить его с помощью этой функции: http://www.php.net/manual/en/function.getimagesize.php
Если у вас есть только $ FinalImage, и вы хотите отслеживать $ smallimage base в $ Final image, то «NO WAY» на PHP.
Попробуйте Java.
^ _ ^