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

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

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

{ "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);

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


person Natan Yagudayev    schedule 12.12.2018    source источник


Ответы (1)


Догадаться:

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);
                    }
person Natan Yagudayev    schedule 12.12.2018