Authentication 如何使用Azure认知人脸API验证两个图像?需要样本代码吗

Authentication 如何使用Azure认知人脸API验证两个图像?需要样本代码吗,authentication,microsoft-cognitive,face-recognition,azure-cognitive-services,face,Authentication,Microsoft Cognitive,Face Recognition,Azure Cognitive Services,Face,如何使用Azure认知人脸API验证两个图像?需要样本代码 我有两张一个人的照片。现在我想比较一下这些图片,看看这些图片是否是同一个人的。从文档中我知道,我必须随url发送两个faceid。我试过了,但不起作用。也许,我错过了什么。请帮助我,如果可能的话,为我提供一些相同的示例代码 等待您的响应。请尝试下面的控制台应用程序代码: using Microsoft.Azure.CognitiveServices.Vision.Face; using Microsoft.Azure.Cognitive

如何使用Azure认知人脸API验证两个图像?需要样本代码


我有两张一个人的照片。现在我想比较一下这些图片,看看这些图片是否是同一个人的。从文档中我知道,我必须随url发送两个faceid。我试过了,但不起作用。也许,我错过了什么。请帮助我,如果可能的话,为我提供一些相同的示例代码


等待您的响应。

请尝试下面的控制台应用程序代码:

using Microsoft.Azure.CognitiveServices.Vision.Face;
using Microsoft.Azure.CognitiveServices.Vision.Face.Models;
using System;
using System.IO;
using System.Linq;
using System.Threading;

namespace FaceIdentityTest
{
    class Program
    {

        static void Main(string[] args)
        {


            string persionPicPath = @"<some path>\personPic.jpg";

            String[] picsPath = { @"<some path>\pic1.jpg", @"<some path>\pic2.jpg" };

            string endpoint = @"https://<your endpoint name>.cognitiveservices.azure.com/";
            string subscriptionKey = "<your subscription key>";



            IFaceClient faceClient = new FaceClient(
            new ApiKeyServiceClientCredentials(subscriptionKey),
            new System.Net.Http.DelegatingHandler[] { });

            faceClient.Endpoint = endpoint;

            // Create an empty PersonGroup
            Console.WriteLine("create person group");
            string personGroupId = "demogroup";
            faceClient.PersonGroup.CreateAsync(personGroupId, "demo group").GetAwaiter().GetResult();

            // Define a person named Bill
            Console.WriteLine("create a person in group");
            var createPersonResult = faceClient.PersonGroupPerson.CreateAsync(
                // Id of the PersonGroup that the person belonged to
                personGroupId,
                // Name of the person
                "Bill"
            ).GetAwaiter().GetResult();


            //Add a face to Bill
            Console.WriteLine("Add a face to person");
            using (Stream s = File.OpenRead(persionPicPath))
            {
                // Detect faces in the image and add to Anna
                faceClient.PersonGroupPerson.AddFaceFromStreamAsync(
                    personGroupId, createPersonResult.PersonId, s).GetAwaiter().GetResult();
            }

            //Train person group 
            Console.WriteLine("start train person group...");
            faceClient.PersonGroup.TrainAsync(personGroupId).GetAwaiter().GetResult();


            //Check train status
            TrainingStatus trainingStatus = null;
            while (true)
            {
                trainingStatus = faceClient.PersonGroup.GetTrainingStatusAsync(personGroupId).GetAwaiter().GetResult();

                if (trainingStatus.Status != TrainingStatusType.Running)
                {
                    break;
                }
                else {
                    Console.WriteLine("trainning person group...");
                }

                Thread.Sleep(1000);
            }


            foreach (var pic in picsPath) {

                Console.WriteLine("start identify faces in :" + pic);

                using (Stream s = File.OpenRead(pic))
                {
                    var faces = faceClient.Face.DetectWithStreamAsync(s).GetAwaiter().GetResult();
                    var faceIds = faces.Select(face => (Guid)face.FaceId).ToList();

                    var results = faceClient.Face.IdentifyAsync(faceIds, personGroupId).GetAwaiter().GetResult();
                    foreach (var identifyResult in results)
                    {
                        Console.WriteLine("Result of face: {0}", identifyResult.FaceId);
                        if (identifyResult.Candidates.Count == 0)
                        {
                            Console.WriteLine("No one identified");
                        }
                        else
                        {
                            // Get top 1 among all candidates returned
                            var candidateId = identifyResult.Candidates[0].PersonId;
                            var person = faceClient.PersonGroupPerson.GetAsync(personGroupId, candidateId).GetAwaiter().GetResult();
                            Console.WriteLine("Identified as {0}", person.Name);
                        }
                    }

                }

            }
            Console.ReadKey();
        }
    }
}
使用Microsoft.Azure.CognitiveServices.Vision.Face;
使用Microsoft.Azure.CognitiveServices.Vision.Face.Models;
使用制度;
使用System.IO;
使用System.Linq;
使用系统线程;
命名空间FaceIdentityTest
{
班级计划
{
静态void Main(字符串[]参数)
{
字符串personpicpath=@“\personPic.jpg”;
字符串[]picsPath={@“\pic1.jpg”,@“\pic2.jpg};
字符串端点=@“https://.cognitiveservices.azure.com/";
字符串subscriptionKey=“”;
IFaceClient faceClient=新faceClient(
新的ApiKeyServiceClientCredentials(subscriptionKey),
新系统.Net.Http.DelegatingHandler[]{});
faceClient.Endpoint=Endpoint;
//创建一个空的PersonGroup
Console.WriteLine(“创建人员组”);
字符串personGroupId=“demogroup”;
faceClient.PersonGroup.CreateAsync(personGroupId,“演示组”).GetAwaiter().GetResult();
//定义一个叫比尔的人
Console.WriteLine(“在组中创建一个人”);
var createPersonResult=faceClient.PersonGroupPerson.CreateAsync(
//此人所属的个人组的Id
personGroupId,
//姓名
“法案”
).GetAwaiter().GetResult();
//给帐单加一张脸
Console.WriteLine(“给人添加一张脸”);
使用(streams=File.OpenRead(personpicpath))
{
//检测图像中的人脸并添加到
faceClient.PersonGroupPerson.AddFaceFromStreamAsync(
personGroupId,createPersonResult.PersonId,s).GetAwaiter().GetResult();
}
//列车员组
控制台.WriteLine(“启动列车人员组…”);
faceClient.PersonGroup.TrainAsync(personGroupId.GetAwaiter().GetResult();
//检查列车状态
TrainingStatus TrainingStatus=null;
while(true)
{
trainingStatus=faceClient.PersonGroup.GetTrainingStatusAsync(personGroupId.GetWaiter().GetResult();
if(trainingStatus.Status!=TrainingStatusType.Running)
{
打破
}
否则{
Console.WriteLine(“培训人员组…”);
}
睡眠(1000);
}
foreach(picsPath中的var pic){
Console.WriteLine(“开始识别:”+pic中的面);
使用(streams=File.OpenRead(pic))
{
var faces=faceClient.Face.DetectWithStreamAsync.GetAwaiter().GetResult();
var faceIds=faces.Select(face=>(Guid)face.FaceId.ToList();
var results=faceClient.Face.identifySync(faceid,personGroupId).GetAwaiter().GetResult();
foreach(var IdentificationResult in results)
{
WriteLine(“面的结果:{0}”,identifyResult.FaceId);
if(identifyResult.Candidates.Count==0)
{
Console.WriteLine(“无人识别”);
}
其他的
{
//在所有返回的候选人中获得前1名
var candidateId=IdentificationResult.Candidates[0]。PersonId;
var person=faceClient.PersonGroupPerson.GetAsync(personGroupId,candidateId).getWaiter().GetResult();
WriteLine(“标识为{0}”,person.Name);
}
}
}
}
Console.ReadKey();
}
}
}
我的照片:

结果:

顺便说一句,无论您使用哪种编程语言,只要按照本演示中的步骤操作,就可以使用FaceAPI识别人脸

希望能有帮助

您可以在VS中的此处导入Microsoft.Azure.CognitiveServices.Vision.Face:

如何获取Microsoft.Azure.CognitiveServices.Vision.Face?我之前试过这个。但它没有出现在名单上。我正在使用visual studio 2013和.Net 4.5.2。有什么问题吗?Hi@Ayan,如本页所示:此软件包只能与SemVer 2.0.0兼容的NuGet客户端一起下载,如Visual Studio 2017(15.3版)及以上版本或NuGet client 4.3.0及以上版本。也许你可以尝试手动导入…嗨@Ayan,我可以知道这篇文章是否对你有帮助吗?如果是这样,请单击答案旁边的复选标记,将其从灰显切换为填充,以标记此答案,从而帮助有类似问题的其他人。您好@Ayan,顺便说一句,我使用的是VS 2019和.Net Framework 4.7.2“我试过了,但不起作用。也许,我错过了什么。请帮助我,如果可能的话,为我提供一些相同的示例代码。”<如果有问题,请添加您的实现细节、您面临的错误等。