日常API之C#百度人脸识别
最近看到一只我家徒儿发来的链接,原来是一堆百度AI的SDK,于是一时兴起就做了一只人脸识别,喵喵喵(●'◡'●)
一、准备工作
首先,当然是下载SDK啦:http://ai.baidu.com/sdk#sdk-category-bfr,可以根据自己的语言选择,在这里使用C# WPF 做示例
SDK里的文件大概是酱紫:
FaceDemo.cs : 官方示例文件
AipSdk.dll : 需要调用的SDK
AipSdk.XML : SDK注释
Newtonsoft.Json.dll : 用于解析JSON 必须是版本10.0.0.0
Newtonsoft.Json.xml : 注释
有了SDK,接下来还需要用于拍照的dll,这里我们使用WPFMediaKit.dll来实现
二、编码工作
在我们使用SDK之前还需要录入面部信息,即使用WPFMediaKit.dll进行拍照并储存。
布局:需要一只Button,并添加引用xmlns:Controls="clr-namespace:WPFMediaKit.DirectShow.Controls;assembly=WPFMediaKit",和添加控件:<Controls:VideoCaptureElement x:Name="vce"/>
WPFMediaKit的使用,即在button的单击事件写入:
vce.Stop();
RenderTargetBitmap bmp = new RenderTargetBitmap(
(int)vce.ActualWidth,
(int)vce.ActualHeight,
, , PixelFormats.Default);
bmp.Render(vce);
BitmapEncoder encoder = new JpegBitmapEncoder();//默认使用JPG格式保存,可以切换成其他格式,因为JPG格式的文件更小,所以这里推荐使用
encoder.Frames.Add(BitmapFrame.Create(bmp));
using (MemoryStream ms = new MemoryStream())
{
encoder.Save(ms);
byte[] data = ms.ToArray();
File.WriteAllBytes("b.jpg", data);//写入文件b.jpg可以替换成其他
}
这样我们保存了面部数据,接下来就可以调用SDK了(为了用户数据安全可以为保存的文件启用加密设置)
由于我们需要2次用户的面部数据来判断是否为同一个人,所以还需要进行第二次采集数据(在用户点击"识别"按钮时)
vce.Stop();
RenderTargetBitmap bmp = new RenderTargetBitmap(
(int)vce.ActualWidth,
(int)vce.ActualHeight,
, , PixelFormats.Default);
bmp.Render(vce);
BitmapEncoder encoder = new JpegBitmapEncoder();//默认使用JPG格式保存,可以切换成其他格式,因为JPG格式的文件更小,所以这里推荐使用
encoder.Frames.Add(BitmapFrame.Create(bmp));
using (MemoryStream ms = new MemoryStream())
{
encoder.Save(ms);
byte[] data = ms.ToArray();//此处不必保存,因为之后将直接用到byte[]
...//未完
接下来要在读取到byte[]之后,再次读取之前用户的面部数据
byte[] bata2 = File.ReadAllBytes("b.jpg");
最后,调用SDK并判断是否为同一人
var client = new Baidu.Aip.Face.Face("API KEY", "Secret Key");//这的KEY可以到百度申请,链接:https://console.bce.baidu.com/ai/?fromai=1#/ai/face/app/list
var images = new byte[][] { data, data };//之前我们获取的数据
var result = double.Parse(client.FaceMatch(images).First.First.Last.Last.First.ToString());//发送并解析返回的数据,获取两个数据的相似度
if (result >= )//判断相似度,一般在大于90时是同一人,可以自己调节
{
//此处为识别成功(同一人)
}else{
//此处为识别识别(不同的两人)
}
这样我们就完成了整个SDK的调用
三、运行测试
首先录入我的数据,嘟嘟嘟

录入完成,接下来就要识别了

蛤!成功,接下来换一个人

嘟嘟,失败惹
本教程完整源码:https://github.com/TwilightLemon/Face (●'◡'●)求STAR和Follow
喵,这次的教程到这里就结束啦,期待下一期吧!
日常API之C#百度人脸识别的更多相关文章
- 百度人脸识别api及face++人脸识别api测试(python)
一.百度人脸识别服务 1.官方网址:http://apistore.baidu.com/apiworks/servicedetail/464.html 2.提供的接口包括: 2.1 多人脸比对:请求多 ...
- 基于Emgu CV+百度人脸识别,实现视频动态 人脸抓取与识别
背景 目前AI 处于风口浪尖,作为 公司的CTO,也作为自己的技术专研,开始了AI之旅,在朋友圈中也咨询 一些大牛对于AI 机器学习框架的看法,目前自己的研究方向主要开源的 AI 库,如:Emgu C ...
- C# 30分钟完成百度人脸识别——进阶篇(文末附源码)
距离上次入门篇时隔两个月才出这进阶篇,小编惭愧,对不住关注我的卡哇伊的小伙伴们,为此小编用这篇博来谢罪. 前面的准备工作我就不说了,注册百度账号api,创建web网站项目,引入动态链接库引入. 不了解 ...
- 百度人脸识别AI实践.doc
0, 前言 百度开放了很多AI能力,其中人脸识别就是其中之一. 本文对百度人脸识别AI进行实践检验,看看其使用效果如何. 鉴于是最为基础的实践,基本都是在其接口范例代码修改而来. 百度人脸识别AI网站 ...
- uniapp安卓ios百度人脸识别、活体检测、人脸采集APP原生插件
插件亮点 1 支持安卓平板(横竖屏均可),苹果的iPad.2 颜色图片均可更换. 特别提醒 此插件包含 android 端和 iOS 端,考虑到有些同学只做其中一个端的 app,特意分为 2 个插件, ...
- Qt封装百度人脸识别+图像识别
AI技术的发展在最近几年如火如荼,工资待遇也是水涨船高,应用的前景也是非常广阔,去年火起来的人脸识别,今年全国遍地开花,之前封装了下face++的人脸识别等接口,今年看了下百度的AI,还免费了,效果也 ...
- 转《trackingjs+websocket+百度人脸识别API,实现人脸签到》流程
先用websocket与后台建立通讯:用trackingjs在页面调用电脑摄像头,监听人脸,发现有人脸进入屏幕了,就把图片转成base64字符串,通过websocket发送到后端:后端拿到图片,调用百 ...
- trackingjs+websocket+百度人脸识别API,实现人脸签到
在公司做了个年会的签到.抽奖系统.用java web做的,用公司的办公app扫二维码码即可签到,扫完码就在大屏幕上显示这个人的照片.之后领导让我改得高大上一点,用人脸识别来签到,就把扫二维码的步骤改成 ...
- python 与 百度人脸识别api
用python来做人脸识别代码量少 思路清晰, 在使用之前我们需要在我们的配置的编译器中通过pip install baidu-aip 即可 from aip import AipFac ...
随机推荐
- Flash TextField selectable bug block TextEvent.Link solution
There is an old version Felx SDK bug(in my case it's Flex SDK v3.3.0.4852) that when TextField.selec ...
- Java 基础 break和continue关键字的使用
break&continue关键字的使用 break:使用在switch...case语句或者循环结构语句中,表示结束当前循环. 示例代码: public class TestBreak { ...
- 【数据结构与算法】一致性Hash算法及Java实践
追求极致才能突破极限 一.案例背景 1.1 系统简介 首先看一下系统架构,方便解释: 页面给用户展示的功能就是,可以查看任何一台机器的某些属性(以下简称系统信息). 消息流程是,页面发起请求查看指定机 ...
- Java NIO 核心组件学习笔记
背景知识 同步.异步.阻塞.非阻塞 首先,这几个概念非常容易搞混淆,但NIO中又有涉及,所以总结一下[1]. 同步:API调用返回时调用者就知道操作的结果如何了(实际读取/写入了多少字节). 异步:相 ...
- Python读入CIFAR-10数据库
CIFAR-10可以去http://www.cs.toronto.edu/~kriz/cifar.html下载(记得下载python格式) CIFAR-10数据组成: 训练集和测试集分别有50000和 ...
- bootstrap table 插件多语言切换
在bootstrap中的bootstrap table 插件在多语言切换的审核,只需要如下操作 引入bootstrap-table-locale-all.js文件 $('#Grid').bootstr ...
- Struts2拦截器记录系统操作日志
前言 最近开发了一个项目,由于项目在整个开发过程中处于赶时间状态(每个项目都差不多如此)所以项目在收尾阶段发现缺少记录系统日志功能,以前系统都是直接写在每个模块的代码中,然后存入表单,在页面可以查看部 ...
- App 组件化/模块化之路——如何封装网络请求框架
App 组件化/模块化之路——如何封装网络请求框架 在 App 开发中网络请求是每个开发者必备的开发库,也出现了许多优秀开源的网络请求库.例如 okhttp retrofit android-asyn ...
- Struts2框架05 result标签的类型
1 result标签是干什么的 就是结果,服务器处理完返回给浏览器的结果:是一个输出结果数据的组件 2 什么时候需要指定result标签的类型 把要输出的结果数据按照我们指定的数据类型进行处理 3 常 ...
- json和xml封装数据、数据缓存到文件中
一.APP的通信格式之xml xml:扩展标记语言,可以用来标记数据,定义数据类型,是一种允许用户对自己标记语言进行定义的源语言.XML格式统一,扩平台语言,非常适合数据传输和通信,业界公认的标准. ...