Ограничительная рамка (слева, сверху, высота, ширина) с координатами PHP x1, x2, y1, y2? - PullRequest
0 голосов
/ 12 декабря 2018

Я использую 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);

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

1 Ответ

0 голосов
/ 12 декабря 2018

Разобрался:

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);
                    }
...