Я занимаюсь разработкой веб-приложения, которое размывает лица на изображениях. Я использовал Google Vision API для обнаружения лиц, у которых возникают проблемы с достижением эффекта размытия.
Я уже получил координаты, см. Пример JSON.
boundingPoly": {
"vertices": [
{
"x": 1002,
"y": 1024
},
{
"x": 1105,
"y": 1024
},
{
"x": 1105,
"y": 1144
},
{
"x": 1002,
"y": 1144
}
]
}
Изображение можно посмотреть здесь: https://i.imgur.com/o1uIqL7.jpg
Вот полный вывод JSON от Google Vision: https://groupghost.com/crowd2.json
Вот что я попробовал:
$data = json_decode(file_get_contents('data/crowd2.json'), 1);
$img1 = imagecreatefromjpeg('data/crowd2.jpg');
foreach ($data['faceAnnotations'] as $key => $value) {
$box = $value['boundingPoly']['vertices'];
$x = $box[0]['x'];
$y = $box[0]['y'];
$width = $box[1]['x']-$box[0]['x'];
$height = $box[2]['y']-$box[0]['y'];
$img2 = imagecreatetruecolor($width, $height);
imagecopy($img2, $img1, 0, 0, $x, $y, $width, $height);
$gaussian = array(
array(1.0, 2.0, 1.0),
array(2.0, 4.0, 2.0),
array(1.0, 2.0, 1.0)
);
imageconvolution($img2, $gaussian, 16, 0);
imagecopymerge($img1, $img2, $x, $y, 0, 0, $width, $height, 100);
imagedestroy($img2);
}
imagejpeg($img1, 'data/temp.jpg');
imagedestroy($img1);