laravel — Ограничительная рамка (слева, сверху, высота, ширина) для PHP x1, x2, y1, y2 координаты?

Я использую AWS Rekognition для обнаружения лиц на изображении. Когда лицо обнаружено, оно выводит информацию о связанной рамке, чтобы вы могли использовать ее для рисования на изображении. Однако это left, top, height и width, а числа — десятичные числа с плавающей запятой.

Вот пример вывода:

{ "BoundingBox": { "Width": 0.06649632751941680908203125, "Height": 0.102198123931884765625, "Left": 0.52286112308502197265625, "Top": 0.2651510536670684814453125 }

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

                list($width, $height, $type, $attr) = getimagesize($destinationPath . $im . '.png');
$white = imagecolorallocate($im, 255, 255, 255);
imagerectangle($im, $result['FaceDetails']['0']['BoundingBox']['Top'] * $width, $result['FaceDetails']['0']['BoundingBox']['Left'] * $height, $result['FaceDetails']['0']['BoundingBox']['Height'] * $width, $result['FaceDetails']['0']['BoundingBox']['Width'] * $height, $white);
imagepng($im, $destinationPath . $im . '.png', 9);

Однако коробка никогда не совпадает с лицом. Есть ли более простой способ преобразовать эти переменные или рассчитать их? Я искал повсюду и мог действительно использовать некоторые рекомендации.

0

Решение

Догадаться:

list($width, $height) = getimagesize($destinationPath . $im . '.png');
$white = imagecolorallocate($im, 255, 255, 255);
foreach ($result['FaceDetails'] as $r) {
$widtho = $r['BoundingBox']['Width'];
$heighto = $r['BoundingBox']['Height'];
$left = $r['BoundingBox']['Left'];
$top = $r['BoundingBox']['Top'];
$w = $width * $widtho;
$h = $height * $heighto;
$x = $left * $width;
$y = $top * $height;
imagerectangle($im, $x, $y, $x + $w, $y + $h, $white);
imagepng($im, $destinationPath . $im . '.png', 9);
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]