ConFoo 2025

Imagick::subImageMatch

(PECL imagick 3 >= 3.3.0)

Imagick::subImageMatchRecherche une sous-image dans l'image courante et renvoie une image de similarité

Description

public Imagick::subImageMatch(Imagick $Imagick, array &$offset = ?, float &$similarity = ?): Imagick

Recherche une sous-image dans l'image courante et renvoie une image de similarité telle qu'un emplacement de correspondance exacte est complètement blanc et si aucun des pixels ne correspond, noir, sinon un certain niveau de gris entre les deux. Vous pouvez également passer les paramètres facultatifs bestMatch et similarity. Après avoir appelé la fonction, similarity sera défini sur le 'score' de la similarité entre la sous-image et la position correspondante dans l'image plus grande, bestMatch contiendra un tableau associatif avec les éléments x, y, width, height qui décrivent la région correspondante.

Liste de paramètres

Imagick

offset

similarity

Une nouvelle image qui affiche la quantité de similarité à chaque pixel.

Valeurs de retour

Exemples

Exemple #1 Imagick::subImageMatch()

<?php
function subImageMatch($imagePath) {
$imagick = new \Imagick(realpath($imagePath));
$imagick2 = clone $imagick;
$imagick2->cropimage(40, 40, 250, 110);
$imagick2->vignetteimage(0, 1, 3, 3);

$similarity = null;
$bestMatch = null;
$comparison = $imagick->subImageMatch($imagick2, $bestMatch, $similarity);

$comparison->setImageFormat('png');
header("Content-Type: image/png");
echo
$imagick->getImageBlob();
}

?>

add a note

User Contributed Notes 1 note

up
0
inipel at ya dot ru
3 years ago
After $ im->cropImage method, $ im->subImageMatch doesn't work, before using $ im->subImageMatch, use $ im->setImagePage(0, 0, 0, 0);

The sequence is as follows:
$ im->cropImage();
$ im->setImagePage (0, 0, 0, 0);
$ im->subImageMatch()
To Top