Я следую инструкциям о том, как получить теги изображений из Microsoft Vision API здесь:
https://docs.microsoft.com/en-us/azure/cognitive-services/computer-vision/quickstarts/php
Мне удалось получить правильный ответ CURL body, который выглядит так:
{
"tags": [
{
"name": "person",
"confidence": 0.98979085683822632
},
{
"name": "man",
"confidence": 0.94493889808654785
},
{
"name": "outdoor",
"confidence": 0.938492476940155
},
{
"name": "window",
"confidence": 0.89513939619064331
}
]
}
Я пытался foreach
теги, но у меня возникли проблемы.
$response = curl_exec($curl);
$header_size = curl_getinfo($curl, CURLINFO_HEADER_SIZE);
$body = substr($response, $header_size);
$header = substr($response, 0, $header_size);
$rows = explode("\n", $header);
$err = curl_error($curl);
curl_close($curl);
$resp = json_decode( $body, true );
if ($err) {echo $err; } else {
// foreach thought tags, and if tag value is above 0.9, than show/echo it, do something with it
}
Я не могу повторить любой тег. Я хотел бы показать только имя тега со значением выше 0,9. Что-то вроде: если тэг достоверности> 0,9, повторить его, сделать что-то с ним.
Вы можете использовать этот фрагмент (заменив конечную точку и ключ подписки своим собственным):
<?php
$data = array("url" => "https://raw.githubusercontent.com/Microsoft/Cognitive-Face-Windows/master/Data/detection1.jpg");
$data_string = json_encode($data);
$curl = curl_init('https://<YOUR_SUBSCRIPTION-LOCATION>.api.cognitive.microsoft.com/vision/v1.0/tag');
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt($curl, CURLOPT_POST, 1 );
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Ocp-Apim-Subscription-Key: <YOUR-SUBSCRIPTION-KEY>'
));
$response = curl_exec($curl);if(curl_error($curl)) {
echo 'error:' . curl_error($curl);
}
else {
$json_object = json_decode($response, true);
$tags = $json_object["tags"];
foreach($tags as $key => $value) {
if ($value["confidence"] > 0.5) {
echo "Tag name: ".$value["name"]." Confidence: ".$value["confidence"]."<br />";
}
}
}
curl_close($curl);
?>
Это выводит:
Tag name: person. Confidence: 0.99900645017624
Tag name: building. Confidence: 0.99334067106247
Tag name: outdoor. Confidence: 0.98552924394608
Tag name: woman. Confidence: 0.9338972568512
Tag name: glasses. Confidence: 0.87850379943848
Tag name: wearing. Confidence: 0.86172193288803
Tag name: sunglasses. Confidence: 0.67616695165634
Других решений пока нет …