.NET调用阿里云人脸识别1:1简易流程保姆级教学

需要注意的是,以下内容仅限基础调用

人脸比对1:1
功能说明

该功能是两张照片对比,比对两张照片是不是同一个人,至于应用到什么场景,可以参考阿里云的官方文档,我这边以大学生项目来说的话,比如员工打卡,是可以首次先录入一张照片到库里面的,然后打卡的时候,可以拍一张最好的照片,然后跟库里面去比对的,需要注意的是,这个接口不一定有活体检测,所以照片有可能是可以过的,所以,最好用作大学项目来做,实际的企业项目的话,活体检测这些接口肯定是要加的,只有那个接口过了才会到这个接口

1.第一步是需要去阿里云开通人体人脸的,前提是你有阿里云
开通人体人脸

2.开通之后就可以点在线调试,或者去看看官方文档

人脸识别控制台传送门

阿里云官方文档传送门

人脸识别1:1在线调试

3.选择c#,通过在线调试,我们可以拿到右边这样一个demo,几乎是你自己稍微改一改就能用的,基本上就只需要改参数,对于小白来说还是非常友好的,这时候,可以在左边这块输入参数,先用可视化的方式去调用一次接口,注意是收费的,需要确保账号内有余额,调通了后,我们copy右侧的demo到我们的项目中

4.在此之前,我们需要准备一个key,如果不知道自己的key,或者没有设置过key,去这里设置一个,需要注意保存好自己的账号,密码,别泄露

5.接下来copy代码,我这个地方key是直接明文了,也是为了方便测试,这种写法有一定可能会泄露key,也可以按照官方文档保存在电脑的系统环境中,这样会更安全一点

csharp 复制代码
public static AlibabaCloud.SDK.Facebody20191230.Client CreateClient()
{
    // 工程代码泄露可能会导致 AccessKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考。
    // 建议使用更安全的 STS 方式,更多鉴权访问方式请参见:https://help.aliyun.com/document_detail/378671.html。
    string accessKeyId = "你的accessKeyId";
    string accessKeySecret = "你的accessKeySecret ";
    AlibabaCloud.OpenApiClient.Models.Config config = new AlibabaCloud.OpenApiClient.Models.Config
    {
        // 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID。
        AccessKeyId = accessKeyId,
        // 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。
        AccessKeySecret = accessKeySecret,
    };
    // Endpoint 请参考 https://api.aliyun.com/product/facebody
    config.Endpoint = "facebody.cn-shanghai.aliyuncs.com";
    return new AlibabaCloud.SDK.Facebody20191230.Client(config);
}
csharp 复制代码
/// <summary>
/// 图片转base64
/// </summary>
/// <param name="imagePath"></param>
/// <returns></returns>
public string ImageOfBase64(string imagePath)
{
    try
    {
        byte[] imageBytes = System.IO.File.ReadAllBytes(imagePath);
        string baseA = Convert.ToBase64String(imageBytes);
        return baseA;
    }
    catch (Exception)
    {
        return "";
    }
}
//调用
public static void Main(string[] args)
{
    AlibabaCloud.SDK.Facebody20191230.Client client = CreateClient();
    //AlibabaCloud.SDK.Facebody20191230.Models.CompareFaceRequest compareFaceRequest = new AlibabaCloud.SDK.Facebody20191230.Models.CompareFaceRequest();
    AlibabaCloud.SDK.Facebody20191230.Models.CompareFaceRequest compareFaceRequest = new AlibabaCloud.SDK.Facebody20191230.Models.CompareFaceRequest
    {
    	//颗粒度
        QualityScoreThreshold = 98.5f,
        //如果有oss或者url可以使用
        //ImageURLA = "http://workbench-file-transfer.oss-cn-shanghai.aliyuncs.com/user-files/5af067bc-cf93-4cbc-bc4e-d927904d0ec4-17aa8c15fba36c9aa56a85b7e97e27e7.jpg?OSSAccessKeyId=LTAI5tRvL6vYdjKSfTFZ156m&Expires=1716365052&Signature=8QUlWyhhmrMIb3n6TU20QrSWUAs%3D&response-content-disposition=attachment",
        //ImageURLB = "http://workbench-file-transfer.oss-cn-shanghai.aliyuncs.com/user-files/faacaee0-1c9a-46cc-86f3-2d78ec7b1acd-20b74ce7511af03ec3055b9a2bc8aa9c.jpeg?OSSAccessKeyId=LTAI5tRvL6vYdjKSfTFZ156m&Expires=1716365058&Signature=X4Rk04fNS1SXmBPnRU8564JoMos%3D&response-content-disposition=attachment",
        //本地图片转base64
        ImageDataA = new Program().ImageOfBase64("C:\\Users\\admin\\Desktop\\4.jpg"),
        ImageDataB = new Program().ImageOfBase64("C:\\Users\\admin\\Desktop\\2.jpg"),
        //ImageDataB = new Program().ImageOfBase64("C:\\Users\\admin\\Desktop\\3.jpg"),
    };
    AlibabaCloud.TeaUtil.Models.RuntimeOptions runtime = new AlibabaCloud.TeaUtil.Models.RuntimeOptions();
    try
    {
        var re = client.CompareFaceWithOptions(compareFaceRequest, runtime);
        if (re != null)
        {
            if (re.Body.Data.Confidence > 61)
            {
                Console.WriteLine("是同一个人");
            }
        }
    }
    catch (TeaException error)
    {
        // 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
        // 错误 message
        Console.WriteLine(error.Message);
        // 诊断地址
        //Console.WriteLine(error.Data["Recommend"]);
        //AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message);
    }
    catch (Exception error)
    {
        //TeaException error = new TeaException(new Dictionary<string, object>
        //{
        //    { "message", _error.Message }
        //});
         此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
         错误 message
        //Console.WriteLine(error.Message);
         诊断地址
        //Console.WriteLine(error.Data["Recommend"]);
        //AlibabaCloud.TeaUtil.Common.AssertAsString(error.Message);
        Console.WriteLine(error.Message);
    }
}

6.这时候代码会报错,所以需要安装并添加引用
阿里云相关SDK传送门

为了防止官网更新,所以建议还是去官网下载最新的

csharp 复制代码
NuGet\Install-Package AlibabaCloud.SDK.Facebody20191230 -Version 4.1.2

7.安装引用之后,key也写好后,我们就可以跑代码了,在此之前,你需要准备2张图片,如果你的照片是url格式的,就使用ImageURLA和ImageURLB字段,如果你的照片是本地的,就可以使用ImageDataA和ImageDataB他们对应的就是本地图片转base64的图片

8.根据返回来的Confidence,我们就可以判断当前图片是不是同一个人,但是这个值会跟你传参的颗粒度也有关系,所以可以根据你的项目对人脸辨识度的程度来决定给个多少的值比较合适,至于返回参数,可以详见参考文档

相关推荐
柴星星26 分钟前
阿里云ECS服务器仿真
阿里云
Lansonli42 分钟前
云原生(四十一) | 阿里云ECS服务器介绍
服务器·阿里云·云原生
嘟嘟太菜了4 小时前
使用阿里云试用资源快速部署web应用-dofaker为例
阿里云·云计算
一只在学习的瓶子5 小时前
【大模型 AI 学习】大模型 AI 部署硬件配置方案(本地硬件配置 | 在线GPU)
深度学习·阿里云·ai
一丝晨光7 小时前
Java、PHP、ASP、JSP、Kotlin、.NET、Go
java·kotlin·go·php·.net·jsp·asp
yufei-coder8 小时前
C#基础语法
开发语言·c#·.net
Mudrock__9 小时前
前后端传输文件(图片)
vue·.net
顶顶年华正版软件官方12 小时前
IDM下载器如何下载网盘文件 IDM下载器支持哪些网盘
阿里云·腾讯云·idm
冰万森13 小时前
亚马逊AI编程工具Amazon Q 和 Amazon CodeWhisperer使用教程
云计算·aws
深圳奔之升1 天前
19款奔驰E300升级新款触摸屏人机交互系统
人机交互·奔驰e300·升级改装