【问题标题】:Microsoft Azure Face API - Face detect (no result)Microsoft Azure 人脸 API - 人脸检测(无结果)
【发布时间】:2018-12-31 17:05:33
【问题描述】:

在使用人脸 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() 返回任何东西。不知道你在期待什么。
  • 我希望代码能够检测请求正文中提供的图像中的人脸。

标签: azure microsoft-cognitive face-api


【解决方案1】:

正如 evilsnobu 所说,如果你想得到响应,你需要返回 MakeRequest() 结果。

如果你想使用网络图片资源,你需要添加它的url作为post body。

请尝试使用以下代码获得预期结果。

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 的更多信息,请参阅tutorial

参考:

How to Detect Faces in Image

更新:

如果你想使用下面的 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值替换掉。
  • 我正在使用您的代码与我的“密钥”和项目名称“命名空间 july26th”
  • 其次您的端点是“eastasia.api.cognitive.microsoft.com/face/v1.0/detect?”而我的是“westcentralus.api.cognitive.microsoft.com/face/v1.0?”无需检测。有关系吗?
  • @AfshanAnwarAli。根据我的测试,detect 是必需的
猜你喜欢
  • 2020-10-24
  • 2018-06-19
  • 1970-01-01
  • 2016-11-05
  • 2019-11-18
  • 2021-10-04
  • 1970-01-01
  • 1970-01-01
  • 2013-09-24
相关资源
最近更新 更多