При использовании службы обнаружения лиц Face API V1.0 я не обнаружил ошибок, но также и без результата. Я работаю над C#. Ключ API действителен и показывает результат на других кодах.
Любая помощь приветствуется. Заранее спасибо.
Code is as follows:
using System;
using System.Net.Http.Headers;
using System.Text;
using System.Net.Http;
using System.Web;
namespace CSHttpClientSample
{
static class Program
{
static void Main()
{
MakeRequest();
Console.WriteLine("Hit ENTER to exit...");
Console.ReadLine();
}
static async void MakeRequest()
{
var client = new HttpClient();
var queryString = HttpUtility.ParseQueryString(string.Empty);
// Request headers
client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", "9b0bd0ce75d040769834af2339b93e1d");
// Request parameters
queryString["returnFaceId"] = "true";
queryString["returnFaceLandmarks"] = "false";
queryString["returnFaceAttributes"] = "Age";
//var uri = "https://westcentralus.api.cognitive.microsoft.com/face/v1.0/detect" + queryString;
var uri = "https://eastasia.api.cognitive.microsoft.com/face/v1.0/detect" + queryString;
HttpResponseMessage response;
// Request body
byte[] byteData = Encoding.UTF8.GetBytes("https://i.kinja-img.com/gawker-media/image/upload/s--0MPvwvU0--/c_scale,f_auto,fl_progressive,q_80,w...");
using (var content = new ByteArrayContent(byteData))
{
content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
response = await client.PostAsync(uri, content);
}
}
}
}
Также не публикуйте ключ подписки на форуме, просто замените его образцом текста.
Вы не ждете звонка MakeRequest()
. Хуже того, вы ничего не возвращаете с MakeRequest()
. Не уверен, чего вы ожидаете.
Я ожидаю, что код обнаружит лица на изображении, предоставленном в теле запроса.
Как упоминал evilsnobu, если вы хотите получить ответ, вам нужно вернуть результат MakeRequest ().
Если вы хотите использовать ресурс веб-изображения, вам нужно добавить его URL-адрес в качестве тела сообщения.
Пожалуйста, попробуйте использовать следующий код, чтобы получить превосходный результат.
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using System.Web;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
static void Main(string[] args)
{
var response = MakeRequest().Result;
var content = response.Content.ReadAsStringAsync().Result
}
static async Task<HttpResponseMessage> MakeRequest()
{
var client = new HttpClient();
var queryString = HttpUtility.ParseQueryString(string.Empty);
// Request headers
client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", "your key");
// Request parameters
queryString["returnFaceId"] = "true";
queryString["returnFaceLandmarks"] = "false";
queryString["returnFaceAttributes"] = "Age";
var uri = "https://eastasia.api.cognitive.microsoft.com/face/v1.0/detect?" + queryString; //add ? before query string
var data = new JObject
{
["url"] =
"https://docs.microsoft.com/en-us/azure/cognitive-services/face/images/facefindsimilar.queryface.jpg"
};
var json = JsonConvert.SerializeObject(data);
var stringContent = new StringContent(json, Encoding.UTF8, "application/json");
var response = await client.PostAsync(uri, stringContent);
return response;
}
Если возможен C# SDK, для этого можно использовать Microsoft.ProjectOxford.Face. Для получения дополнительной информации о том, как использовать Microsoft.ProjectOxford.Face, обратитесь к этому руководство.
Справка:
Как распознать лица на изображении
Обновлять:
Если вы хотите использовать следующий API
https://[location].api.cognitive.microsoft.com/face/v1.0/group
FaceIds - это массив, попробуйте использовать следующий код:
var jArray = new JArray
{
"cd920c85-d05e-46e2-bb9e-2b0f67024ba2",
"56001f6e-6c48-4a9d-800d-3cc693001197",
"2ae34ecc-eb17-4260-a385-0db699ee17c4"
};
var data = new JObject
{
["faceIds"] = jArray
};
var json = JsonConvert.SerializeObject(data);
Большое спасибо. Результат пока не достигнут. Я получаю сообщение «Программа« [5164] july26th.exe »завершилась с кодом 0 (0x0)».
@AfshanAnwarAli. Вы можете протестировать это с помощью моего кода напрямую и, пожалуйста, замените значение Ocp-Apim-Subscription-Key в коде.
Я использую ваш код в точности с моим «ключом» и именем проекта namespace «26 июля»
во-вторых, ваша конечная точка - "eastasia.api.cognitive.microsoft.com/face/v1.0/detect?" а у меня "westcentralus.api.cognitive.microsoft.com/face/v1.0?" без обнаружения. Это имеет значение?
@AfshanAnwarAli. Судя по моему тесту, требуется detect
Это сработало !! Большое спасибо. Я просто печатаю содержимое Debug.WriteLine («Определено как {0}», содержимое);
Часть идентификации лица возможна бесплатно без подписки на кредитную карту?
Вы можете получить дополнительную информацию о цене API-интерфейса лица из этого ссылка на сайт. Но срок действия бесплатного API истечет через некоторое время.
Я получаю синтаксическую ошибку в теле запроса. Пожалуйста, помогите мне решить эту проблему. Ссылка на изображение: i.stack.imgur.com/QkdkV.jpg
@AfshanAnwarAli Согласно https: // [расположение] .api.cognitive.microsoft.com / face / v1.0 / gro up. FaceIds - это массив. Пожалуйста, посмотрите мой ответ на обновление.
на что указывает результат?