是否可以同时调用2个API并显示组合的答案字符串?

时间:2017-03-04 15:00:34

标签: microsoft-cognitive

由于等待和异步功能,我无法做到这一点。 我希望有一个应用程序可以实时分析一个脸,并在脸上取代矩形,在它上面应该说性别,年龄,情感,情感指导。 所以我想同时使用Face API和Emotion API。 感谢。

2 个答案:

答案 0 :(得分:1)

假设您正在使用C#SDK,您可以等待两个任务完成。代码想要这样的东西:

static bool SameFace(Microsoft.ProjectOxford.Face.Contract.FaceRectangle r1,
        Microsoft.ProjectOxford.Common.Rectangle r2)
{
    // Fuzzy match of rectangles...
    return Math.Abs((r1.Top + r1.Height / 2) - (r2.Top + r2.Height / 2)) < 3 && 
        Math.Abs((r1.Left + r1.Width / 2) - (r2.Left + r2.Width / 2)) < 3;
}

void Test(string imageUrl)
{
    var faceClient = new FaceServiceClient(FACE_API_KEY);
    var emotionClient = new EmotionServiceClient(EMOTION_API_KEY);

    var faceTask = faceClient.DetectAsync(imageUrl, false, false, new FaceAttributeType[] { FaceAttributeType.Age, FaceAttributeType.Gender });
    var emotionTask = emotionClient.RecognizeAsync(imageUrl);

    Task.WaitAll(faceTask, emotionTask);

    var people = from face in faceTask.Result
                 from emotion in emotionTask.Result
                 where SameFace(face.FaceRectangle, emotion.FaceRectangle)
                 select new {
                     face.FaceAttributes.Gender,
                     face.FaceAttributes.Age,
                     emotion.Scores
                 };

    // Do something with 'people'
}

棘手的部分是两个API不具有相同的矩形类型,并且给出稍微不同的值,因此模糊匹配。

答案 1 :(得分:1)

Calling the face and emotion API at the same time重复。

请参阅该主题以获取更多信息。