我有两张图片,我需要在开始拼图的地方找到 X 坐标。一开始我们只知道 Y 坐标 - 对于这张图片,它是51
这意味着我们可以在Y-51的一个像素行中裁剪图像并使用它——我是这样想的,但也许我们可以用另一种方式来做?
无论如何,我不知道下一步该做什么 - 如何在 php 或 cli 中使用 imagemagick 找到 X 坐标
我有两张图片,我需要在开始拼图的地方找到 X 坐标。一开始我们只知道 Y 坐标 - 对于这张图片,它是51
这意味着我们可以在Y-51的一个像素行中裁剪图像并使用它——我是这样想的,但也许我们可以用另一种方式来做?
无论如何,我不知道下一步该做什么 - 如何在 php 或 cli 中使用 imagemagick 找到 X 坐标
你想用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')