1

验证码

片

我有两张图片,我需要在开始拼图的地方找到 X 坐标。一开始我们只知道 Y 坐标 - 对于这张图片,它是51

这意味着我们可以在Y-51的一个像素行中裁剪图像并使用它——我是这样想的,但也许我们可以用另一种方式来做?

无论如何,我不知道下一步该做什么 - 如何在 php 或 cli 中使用 imagemagick 找到 X 坐标

4

1 回答 1

3

你想用Imagick::subImageMatch()方法。

$canvas = new Imagick("canvas.png");
$piece = new Imagick("piece.png");

$canvas->subImageMatch($piece, $offset, $similarity);

where$offset将使用子图像匹配坐标进行更新。

var_dump($offset);
/*
array(4) {
  ["x"]=>
  int(213)
  ["y"]=>
  int(72)
  ["width"]=>
  int(55)
  ["height"]=>
  int(55)
 }
 */

并将 $similarity更新一个浮点数,表示最佳匹配的接近程度。

var_dump($similarity);
// float(0.34148957886102)

Imagick::subImageMatch()还将返回一个“热图”,但这仅对调试扫描有用。

$matches = $canvas->subImageMatch($piece, $offset, $similarity);
$matches->writeImage('heatmap.png')

热图.png

于 2019-12-20T15:48:17.290 回答