C#实现扫脸登陆 ---百度API
【摘要】
前言: 最近正在做一个收费系统,正好需要用到人脸对比。因为需要实现人脸登陆,通过扫描人脸进行登陆。
人脸对比逻辑 需要在注册用户的时候把用户的脸存入到数据库,然后在用户进行人脸登陆的时候。再次拿到用户注...
前言:
最近正在做一个收费系统,正好需要用到人脸对比。因为需要实现人脸登陆,通过扫描人脸进行登陆。
人脸对比逻辑
需要在注册用户的时候把用户的脸存入到数据库,然后在用户进行人脸登陆的时候。再次拿到用户注册时的脸和现在登陆时拍照的脸,去百度的接口进行相似度对比。(这步也可以不去百度接口对比,也可自己在本地写一个对比算法)
解析图:
安装百度api,在这我使用的是在线安装的方法
nuget安装百度api
按照这个方法可以在vs2019中安装网络上的任何api
代码部分:
/**
* Namespace: BLL.Utlity
*
* Function: 百度人脸验证
* Name: Faces
*
* Ver Time Author
* 0.10 2020/11/6 22:30:49 康世行
*
*/
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Entity;
using System.Web.Script.Serialization;
using System.Collections;
namespace BLL.Utlity
{
public class Faces
{
/// <summary>
/// 图片格式转换为Base64string格式
/// </summary>
/// <param name="img"></param>
/// <returns></returns>
public static string readImg(string img)
{
return Convert.ToBase64String(File.ReadAllBytes(img));
}
/// <summary>
/// 人脸验证
/// </summary>
/// <param name="Url1">图像1</param>
/// <param name="Url2">图像2</param>
/// <returns></returns>
public static double FacesResult(string Url1, string Url2) {
var API_KEY = ""; //百度注册账号的apikey
var SECRET_KEY = ""; //百度注册账号的secretkey
var client = new Baidu.Aip.Face.Face(API_KEY, SECRET_KEY);
var faces = new JArray {
new JObject
{
{"image",readImg(Url1)},
{"image_type", "BASE64"},
{"face_type", "LIVE"},
{"quality_control", "LOW"},
{"liveness_control", "NONE"},
},
new JObject
{
{"image",readImg( Url2)},
{"image_type", "BASE64"},
{"face_type", "LIVE"},
{"quality_control", "LOW"},
{"liveness_control", "NONE"},
}
};
//返回值,获取相似值,进行字符串截取。
var result = client.Match(faces);
string str=result.ToString();//获取json字符串
series series = JsonToEntity<series>(str);//json字符串转为实体
string strScore = "0";//默认返回零
//判断是否有返回值
if (series.result != null) {
strScore = series.result.ToString().Substring(14, 2);
}
//转换double返回
double srecc =double.Parse(strScore);// 以获取值,进行类型转换。
return srecc;
}
/// <summary>
/// 把json字符串转成实体
/// </summary>
/// <typeparam name="T">对象</typeparam>
/// <param name="data">json字符串</param>
public static T JsonToEntity<T>(string Json)
{
return JsonConvert.DeserializeObject<T>(Json);
}
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
总结:
这个只是适合做简单的人脸对比,安全性要求不是很高的适合。要是安全性要求很高的话,还得多一步活物检测。(大家如果有更好的人脸验证方法,记得私聊作者,欢迎打扰!)
文章来源: kangshihang.blog.csdn.net,作者:康世行,版权归原作者所有,如需转载,请联系作者。
原文链接:kangshihang.blog.csdn.net/article/details/109642694
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)