由于等待和异步功能,我无法做到这一点。 我希望有一个应用程序可以实时分析一个脸,并在脸上取代矩形,在它上面应该说性别,年龄,情感,情感指导。 所以我想同时使用Face API和Emotion API。 感谢。
答案 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重复。
请参阅该主题以获取更多信息。