当我在控制台中打印以下错误时,我遵循this documentation使用Microsoft Face API在Visual Studio中标识图像中的面孔:
将Person添加到类型为“ Microsoft.ProjectOxford.Face.FaceAPIException”的组异常时出错。
调用以下将人员添加到现有人员组的功能时,将打印异常:
public async void AddPersonToGroup(string personGroupId, string name, string pathImage){
try{
await faceServiceClient.GetPersonGroupAsync(personGroupId);
CreatePersonResult person = await faceServiceClient.CreatePersonAsync(personGroupId, name);
foreach (var imgPath in Directory.GetFiles(pathImage, "*.jpg")) {
using (Stream s = File.OpenRead(imgPath)) {
await faceServiceClient.AddPersonFaceAsync(personGroupId, person.PersonId, s);
}
}
} catch (Exception ex){
//Below is where the error was printed.
Console.WriteLine("Error adding Person to Group " + ex.Message);
}
}
这是我在主要方法中调用AddPersonToGroup
的方式:
new Program().AddPersonToGroup("actor", "Tom Cruise", @"C:\Users\ishaa\Documents\Face_Pictures\Tom_Cruise\");
我尝试在Google中搜索此错误并遇到this SO question,但该答案对我不起作用。 (他们的答案是为FaceServiceClient
构造函数传递订阅密钥和终结点。)
任何人都可以对发生此错误的原因提供任何见解吗?我无法弄清楚是什么原因引起的,但我相信这可能与
await faceServiceClient.GetPersonGroupAsync(personGroupId);
。我还读到它可能是由于我选择了认知服务定价计划。但是,我正在使用的免费照片每分钟允许20笔交易,而我只想为3个人添加9张图片。
答案 0 :(得分:0)
我可以使用下面的新功能找到问题的解决方案,该新功能创建了一个人员组,向其中添加人员,然后输入图像:
public async void AddPersonToGroup(string personGroupId, string name, string pathImage){
//Create a Person Group called actors.
await faceServiceClient.CreatePersonGroupAsync("actors, "Famous Actors");
//Create a person and assign them to a Person Group called "actors"
CreatePersonResult friend1 = await faceServiceClient.CreatePersonAsync("actors", "Tom Cruise");
//Get the directory with all the images of the person.
const string friend1ImageDir = @"C:\Users\ishaa\Documents\Face_Recognition_Pictures\Tom_Cruise\";
foreach (string imagePath in Directory.GetFiles(friend1ImageDir, "*.jpg")){
using (Stream s = File.OpenRead(imagePath)){
try{
//Add the faces for the person.
await faceServiceClient.AddPersonFaceAsync("actors", friend1.PersonId, s);
} catch (Exception e){
Console.WriteLine(e.Message);
}
}
}
}
上面的以下代码为我创建了个人组,创建了人员以及为人员添加图像。我相信可能是由两个原因引起的:
await faceServiceClient.GetPersonGroupAsync(personGroupId);
可能是一个问题。现在,我不再使用它,该代码可与faceServiceClient.CreatePersonGroupAsync
一起使用。