微软提供的人脸识别服务可检测图片中一个或者多个人脸,并为人脸标记出边框,同时还可获得基于机器学习技术做出的面部特征预测。可支持的人脸功能有:年龄、性别、头部姿态、微笑检测、胡须检测以及27个面部重要特征点位置等。FaceAPI 提供两个主要功能: 人脸检测和识别

目录:

  • 申请subscription key
  • 示例效果
  • 开发示例
  • AForge.Net

申请订阅号


示例效果


  • winform示例版,调用微软提供的SDK,见下面介绍
  • 微信集成版, 如下图,开发过程中使用 http 直接调用

开发过程


  • 参见:https://www.azure.cn/cognitive-services/en-us/face-api/documentation/get-started-with-face-api/GettingStartedwithFaceAPIinCSharp
  • 在VS工程的NuGet Package Manager 管理窗口,程序包源:nuget.org, 搜索 Microsoft.ProjectOxford.Face ,进行安装
  • sdk调用示例代码: 图片转byte[]
    1. using (Stream s = new MemoryStream(bytes))
    2. {
    3. var requiredFaceAttributes = new FaceAttributeType[] {
    4. FaceAttributeType.Age,
    5. FaceAttributeType.Gender,
    6. FaceAttributeType.Smile,
    7. FaceAttributeType.FacialHair,
    8. FaceAttributeType.HeadPose,
    9. FaceAttributeType.Glasses
    10. };
    11. var faces = await Utils.FaceClient.DetectAsync(s,
    12. returnFaceLandmarks: true,
    13. returnFaceAttributes: requiredFaceAttributes);
    14. }
  • 也可直接使用http请求,参见:https://dev.projectoxford.ai/docs/services/563879b61984550e40cbbe8d/operations/563879b61984550f30395236

  • 参数信息如下:

  • http post 示例代码:

    1. string URL = "你图片的url";
    2.  
    3. var client = new HttpClient();
    4. var queryString = HttpUtility.ParseQueryString(string.Empty);
    5.  
    6. // Request headers
    7. client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", "你申请的key");
    8.  
    9. // Request parameters
    10. queryString["returnFaceId"] = "true";
    11. queryString["returnFaceLandmarks"] = "false";
    12. queryString["returnFaceAttributes"] = "age,gender,smile";
    13. var uri = "https://api.projectoxford.ai/face/v1.0/detect?" + queryString;
    14.  
    15. HttpResponseMessage response;
    16. byte[] byteData = Encoding.UTF8.GetBytes("{\"url\":\"" + URL + "\"}");
    17.  
    18. using (var content = new ByteArrayContent(byteData))
    19. {
    20. content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
    21.  
    22. var task = client.PostAsync(uri, content);
    23. response = task.Result;
    24.  
    25. var task1 = response.Content.ReadAsStringAsync();
    26. string JSON = task1.Result;
    27. }
  • 人脸识别http参数如下:(注意:要识别出人脸的身份,你必须先定义person,参见 personGroup 、Person介绍 https://www.azure.cn/cognitive-services/en-us/face-api/documentation/face-api-how-to-topics/howtoidentifyfacesinimage

  • 示例代码
    1. var client = new HttpClient();
    2. var queryString = HttpUtility.ParseQueryString(string.Empty);
    3. client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", "XXX");
    4. var uri = "https://api.projectoxford.ai/face/v1.0/identify ";
    5. HttpResponseMessage response;
    6. byte[] byteData = Encoding.UTF8.GetBytes("{\"faceIds\":[\"XXX\"],\"personGroupId\":\"XXX\",\"maxNumOfCandidatesReturned\":5}");
    7.  
    8. using (var content = new ByteArrayContent(byteData))
    9. {
    10. content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
    11.  
    12. var task = client.PostAsync(uri, content);
    13. response = task.Result;
    14.  
    15. var task1 = response.Content.ReadAsStringAsync();
    16. string JSON = task1.Result;
    17. }
  • 根据人脸信息识别出身份后,获取个人信息,参数如下:
  • 示例代码
    1. var client = new HttpClient();
    2. var queryString = HttpUtility.ParseQueryString(string.Empty);
    3. client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", "你申请的key");
    4. var uri = "https://api.projectoxford.ai/face/v1.0/persongroups/你上传的分组/persons/" + personID;
    5.  
    6. var task = client.GetStringAsync(uri);
    7. var response = task.Result;
    8. return JsonConvert.DeserializeObject<Person>(task.Result);

AForge.Net


  • AForge.Net是一个专门为开发者和研究者基于C#框架设计的,他包括计算机视觉与人工智能,图像处理,神经网络,遗传算法,机器学习,模糊系统,机器人控制等领域, 我主要使用这个类库中的vedio 来启动笔记本摄像头进行图片抓拍
  • 类库下载地址: http://www.aforgenet.com/framework/downloads.html
  • 添加控件: 在工具箱中添加AForge.Control,VideoSourcePlayer就是我们要用的控件
  • 示例代码如下:声明变量
    1. FilterInfoCollection videoDevices;
    2. VideoCaptureDevice videoSource;
    3. public int selectedDeviceIndex = ;
  • 启动摄像头示例代码
    1. videoDevices = new FilterInfoCollection(FilterCategory.VideoInputDevice);
    2. selectedDeviceIndex = ;
    3. videoSource = new VideoCaptureDevice(videoDevices[selectedDeviceIndex].MonikerString);//连接摄像头。
    4. videoSource.VideoResolution = videoSource.VideoCapabilities[selectedDeviceIndex];
    5. videoSourcePlayer1.VideoSource = videoSource;
    6. // set NewFrame event handler
    7. videoSourcePlayer1.Start();
  • 抓拍示代码

    1. if (videoSource == null)
    2. return;
    3. Bitmap bitmap = videoSourcePlayer1.GetCurrentVideoFrame();
    4. string fileName = string.Format("{0}.jpg", DateTime.Now.ToString("yyyyMMddHHmmssfff"));
    5. this.filePath = string.Format("c:\\temp\\{0}", fileName);
    6. bitmap.Save(this.filePath, ImageFormat.Jpeg);
    7. this.labelControl1.Text = string.Format("存储目录:{0}", this.filePath);
    8. bitmap.Dispose();
    9. videoDevices.Clear();
  • 窗体关闭事件

    1. if (this.videoSource != null)
    2. {
    3. if (this.videoSource.IsRunning)
    4. {
    5. this.videoSource.Stop();
    6. }
    7. }
  • 示例效果

AI(二):人脸识别的更多相关文章

  1. 基于百度AI开放平台的人脸识别及语音合成

    基于百度AI的人脸识别及语音合成课题 课题需求 (1)人脸识别 在Web界面上传人的照片,后台使用Java技术接收图片,然后对图片进行解码,调用云平台接口识别人脸特征,接收平台返回的人员年龄.性别.颜 ...

  2. 百度AI人脸识别的学习总结

    本文主要分以下几个模块进行总结分析 项目要求:运用百度AI(人脸识别)通过本地与外网之间的信息交互(MQService),从而通过刷脸实现登陆.签字.会议签到等: 1.准备工作: 内网:单击事件按钮— ...

  3. c# 利用AForge和百度AI开发实时人脸识别

    baiduAIFaceIdentify项目是C#语言,集成百度AI的SDK利用AForge开发的实时人脸识别的小demo,里边包含了人脸检测识别,人脸注册,人脸登录等功能 人脸实时检测识别功能 思路是 ...

  4. 技能节-AI人脸识别

    我们收到技能节项目的通知是在两周之前,项目要求做个人脸评分系统. 两周时间写一个"人脸评分系统",好像时间比较紧了,还好我们完成了~这个项目是将摄像头捕获到的包含人脸的图像传输到百 ...

  5. 人脸识别1:n对比 (二)

    本项目采用了百度AI 人脸识别 第三方接口,实现了自选本地手机相册图片上传人脸(faceSet中添加人脸) 和 自选本地手机相册图片寻找出集合中相似度最高的一个face,可返回比对相似度.位置等信息. ...

  6. 基于C# 调用百度AI 人脸识别

    一.设置 登录百度云控制台,添加应用-添加人脸识别,查找,对比等. 记住API Key和Secret Key 二.创建Demo程序 1.使用Nuget安装 Baidu.AI 和 Newtonsoft. ...

  7. AI人脸识别的测试重点

    最常见的 AI应用就是人脸识别,因此这篇文章从人脸识别的架构和核心上,来讲讲测试的重点. 测试之前需要先了解人脸识别的整个流程,红色标识代表的是对应AI架构中的各个阶段 首先是人脸采集. 安装拍照摄像 ...

  8. AI人脸识别SDK接入 — 参数优化篇(虹软)

    引言 使用了虹软公司免费的人脸识别算法,感觉还是很不错的,当然,如果是初次接触的话会对一些接口的参数有些疑问的.这里分享一下我对一些参数的验证结果(这里以windows版本为例,linux.andro ...

  9. 【AI图像识别一】人脸识别测试探索

    ****************************************************************************** 本文主要介绍AI能力平台的人脸识别技术的测 ...

随机推荐

  1. Python Beautiful Soup学习之HTML标签补全功能

    Beautiful Soup是一个非常流行的Python模块.该模块可以解析网页,并提供定位内容的便捷接口. 使用下面两个命令安装: pip install beautifulsoup4 或者 sud ...

  2. windows下Python shell代码自动补全

    Unix下实现如题功能用下面的代码: import rlcompleter, readline readline.parse_and_bind('tab: complete') 但readline不能 ...

  3. xlwt写入中文操作不成功,提示UnicodeDecodeError: ascii codec can't decode byte ...

    打开xlwt包里的Workbook.py文件,修改Workbook类的__init__方法 将 def __init__(self, encoding='ascii', style_compressi ...

  4. JSP页面组件

    一.JSP指令 1.page指令 定义:将关于JSP页面一般设置通知给web容器的属性. 语法:<%@ page attribute_list%> 属性:language;extends; ...

  5. WordPress博客平台的搭建--基于Ubuntu14服务器

    环境:阿里云服务器,系统Ubuntu14.04, 阿里云域名 大致流程:LNMP+WordPress 主要参考博客:VPS+LNMP+WordPress搭建个人网站/博客 遇到的问题: 1.在登陆域名 ...

  6. CodeVS 线段覆盖1~5

    #include <bits/stdc++.h> using namespace std; ; struct Info{int l,r;}P[Maxn]; int n,Cnt,F[Maxn ...

  7. NYOJY 491 幸运三角形

    描述 话说有这么一个图形,只有两种符号组成(‘+’或者‘-’),图形的最上层有n个符号,往下个数依次减一,形成倒置的金字塔形状,除第一层外(第一层为所有可能情况),每层形状都由上层决定,相邻的符号相同 ...

  8. HDU2544 最短路dij

    纯最短路. ///HDU 2544堆优化的最短路 #include <cstdio> #include <iostream> #include <sstream> ...

  9. JavaScript笔记及总结

    前言: 网页中HTML为内容,CSS做展现(修饰内容),Js为行为(交互). Js属于基于对象型的脚本语言,在学习时当作编程语言(如java,c#)学习更好理解. javascript是实现网页动态效 ...

  10. Javascript、CSS和IMG之网页执行探索

    测试环境:windows/chrome 实例1:页面中仅有图片 <html xmlns="http://www.w3.org/1999/xhtml"> <head ...