首页 技术 正文
技术 2022年11月10日
0 收藏 538 点赞 5,015 浏览 2025 个字

最近看到一只我家徒儿发来的链接,原来是一堆百度AI的SDK,于是一时兴起就做了一只人脸识别,喵喵喵(●’◡’●)

一、准备工作

首先,当然是下载SDK啦:http://ai.baidu.com/sdk,可以根据自己的语言选择,在这里使用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的调用

三、运行测试

首先录入我的数据,嘟嘟嘟

日常API之C#百度人脸识别

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

日常API之C#百度人脸识别

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

日常API之C#百度人脸识别

嘟嘟,失败惹

本教程完整源码:https://github.com/TwilightLemon/Face (●’◡’●)求STAR和Follow

喵,这次的教程到这里就结束啦,期待下一期吧!

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,491
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,907
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,740
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,493
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:8,132
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:5,294