.NET做人脸识别并分类
在游乐场、玻璃天桥、滑雪场等娱乐场所,经常能看到有摄影师在拍照片,令这些经营者发愁的一件事就是照片太多了,客户在成千上万张照片中找到自己可不是件容易的事。在一次游玩等活动或家庭聚会也同理,太多了照片导致挑选十分困难。
还好有.NET
,只需少量代码,即可轻松找到人脸并完成分类。
本文将使用Microsoft Azure
云提供的认知服务
(Cognitive Services
)API
来识别并进行人脸分类,可以免费使用,注册地址是:https://portal.azure.com。注册完成后,会得到两个密钥
,通过这个密钥
即可完成本文中的所有代码,这个密钥
长这个样子(非真实密钥):
fa3a7bfd807ccd6b17cf559ad584cbaa
使用方法
首先安装NuGet
包Microsoft.Azure.CognitiveServices.Vision.Face
,目前最新版是2.5.0-preview.1
,然后创建一个FaceClient
:
string key = "fa3a7bfd807ccd6b17cf559ad584cbaa"; // 替换为你的key using var fc = new FaceClient(new ApiKeyServiceClientCredentials(key)) { Endpoint = "https://southeastasia.api.cognitive.microsoft.com", };
然后识别一张照片:
using var file = File.OpenRead(@"C:\Photos\DSC_996ICU.JPG"); IList<DetectedFace> faces = await fc.Face.DetectWithStreamAsync(file);
其中返回的faces
是一个IList
结构,很显然一次可以识别出多个人脸,其中一个示例返回结果如下(已转换为JSON
):
[ { "FaceId": "9997b64e-6e62-4424-88b5-f4780d3767c6", "RecognitionModel": null, "FaceRectangle": { "Width": 174, "Height": 174, "Left": 62, "Top": 559 }, "FaceLandmarks": null, "FaceAttributes": null }, {