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

news2024/9/24 21:21:46

请添加图片描述

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

人脸比对1:1
功能说明

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

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

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

人脸识别控制台传送门

阿里云官方文档传送门
在这里插入图片描述

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

4.在此之前,我们需要准备一个key,如果不知道自己的key,或者没有设置过key,去这里设置一个,需要注意保存好自己的账号,密码,别泄露
获取
5.接下来copy代码,我这个地方key是直接明文了,也是为了方便测试,这种写法有一定可能会泄露key,也可以按照官方文档保存在电脑的系统环境中,这样会更安全一点

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);
}
/// <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传送门
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/8d9efe5d54da477d9ff2e75274f05a40.png
在这里插入图片描述
为了防止官网更新,所以建议还是去官网下载最新的
在这里插入图片描述

NuGet\Install-Package AlibabaCloud.SDK.Facebody20191230 -Version 4.1.2

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1701335.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

实现销售与客流双增长!看看社区零售“排队王”如何成为顶流?

5月18日至5月26日&#xff0c;北京华联BHGMall燃情推出了一年一度的2024 Need&#xff08;你的&#xff09;BHGDay&#xff0c;接棒“五一”热潮&#xff0c;献礼“520”&#xff0c;通过韩式俯拍机、人生四宫格拍摄大赛、真合拍星派对、超级品牌日等丰富多彩的线上线下活动&am…

react实现动态增减表单项

在做项目的时候&#xff0c;甲方给的信息有限&#xff0c;网页的备案信息写成固定的&#xff0c;如下图所示 之后验收的时候&#xff0c;甲方要求把这个备案信息写成动态的&#xff0c;可以自增减&#xff0c;就去react组件库看看有没有具体的实现&#xff0c;果真有&#xff…

STM32_HAL__TIM_输出比较

概述 STM32的输出比较功能通常是指在微控制器的PWM&#xff08;脉冲宽度调制&#xff09;生成能力中的一个方面。STM32微控制器拥有一个或多个定时器/计数器&#xff0c;这些定时器/计数器可以用来生成PWM信号。PWM信号是一种重要的控制信号&#xff0c;广泛应用于电机控制、亮…

1分钟快速掌握JSON格式

文章目录 先说理论代码举例对象型数组型总结 先说理论 下面是JSON的几种简单数据类型: 数据类型描述数字型JavaScript中的双进度浮点类型&#xff0c;通常根据具体情况定义&#xff0c;这里是没有特殊的整形的。字符串型带双引号的Unicode&#xff0c;带反斜杠转义布尔型true…

探索python循环逻辑的魅力:从无限到有限

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、引言&#xff1a;循环逻辑的初步认识 二、无限循环&#xff1a;持续运转的引擎 三、有…

等保服务是一次性服务吗?为什么?怎么理解?

我国等保政策已经严格落地执行&#xff0c;但还有不少企业对于等保服务不是很了解。例如有人问&#xff0c;等保服务是一次性服务吗&#xff1f;为什么&#xff1f;怎么理解&#xff1f;今天我们就来简单回答一下&#xff0c;仅供参考哈&#xff01; 等保服务是一次性服务吗&…

前端Vue自定义顶部搜索框:实现热门搜索与历史搜索功能

前端Vue自定义顶部搜索框&#xff1a;实现热门搜索与历史搜索功能 摘要&#xff1a; 随着前端开发复杂性的增加&#xff0c;组件化开发成为了提高效率和降低维护成本的有效手段。本文介绍了一个基于Vue的前端自定义顶部搜索框组件&#xff0c;该组件不仅具备基本的搜索功能&am…

PLC无线通讯模块在触摸屏与台达PLC之间的应用教程

本方案可以作为信捷触摸屏与台达PLC之间在台达专用协议下将有线通讯改为无线通讯的应用实例。此方案中信捷TG765触摸屏作为主站&#xff0c;台达DVP-32EH PLC作为从站&#xff0c;采用西安达泰电子日系PLC无线通讯终端——DTD435MA-V384&#xff0c;作为实现无线通讯的硬件设备…

十分钟精通MinIO:minio的原理、部署、操作

一、认识MinIO Minio是一个简单易用的云存储服务&#xff0c;就像是一个放在网络上的大文件柜。想象一下&#xff0c;你有一间放满了各种文件的房间&#xff0c;有时候你需要把这些文件分享给朋友或者在不同地方访问它们。Minio就是帮你做到这一点的工具&#xff0c;它让你可以…

力扣:236.二叉树的最近公共祖先(C++)

文章目录 1. 题目描述2. 题目解析2.1 思路一2.1 思路二 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 题目来源: 力扣…二叉树的最近公共祖先 1. 题目描述 百度百科中最近公共祖先的定义为&#xff1a;“对于有根树 T 的两个节点 p、q&#xff0c;最近公共祖先表…

JUC框架(Semaphore、CountDownLatch、CyclicBarrier)

文章目录 Semaphore(信号量)Semaphore介绍Semaphore基本概念Semaphore使用场景Semaphore示例 CountDownLatch &#xff08;计数器/闭锁&#xff09;CountDownLatch 介绍CountDownLatch 基本概念CountDownLatch 使用场景CountDownLatch 基本方法CountDownLatch 示例 CyclicBarri…

新能源锂电池行业创业的财富方案,锂电池回收高阶课

课程下载&#xff1a;https://download.csdn.net/download/m0_66047725/89292234 更多资源下载&#xff1a;关注我。 实战攻略 12年锂电池回收行业经验与坑全收录 课程内容&#xff1a; 001-课程介绍.mp4 002-锂电池的全种类认识.mp4 003-废品锂电池到级片粉末价值估算,mp…

Go微服务: Grpc服务注册在Consul的示例(非Go-Micro)

概述 现在&#xff0c;我们使用consul客户端的api来把GRPC服务实现注册到consul上&#xff0c;非Go-Micro的形式其实&#xff0c;consul官方提供了对应的接口调用来实现&#xff0c;golang中的consul/api包对其进行了封装我们使用consul/api来进行展示 目录结构 gitee.com/g…

纯CSS丝滑边框线条动画

在这个网站&#xff08;minimal-portfolio-swart.vercel.app&#xff09;发现一个不错的交互效果&#xff0c;用户体验效果很不错。如封面图所示&#xff0c;这个卡片上有一根白色的线条围绕着卡片移动&#xff0c;且在线条的卡片内部跟随这一块模糊阴影&#xff0c;特别是在线…

Execel 数据分析-如何使用筛选-图表-透视图-处理多变量数据集

如果你的数据有很多个变量&#xff0c;比如横轴X有a,b,c,d等几个变量&#xff0c;Y轴也有个变量&#xff0c;那么这时候就用得到。 比如下面的例子&#xff0c;测试GPU的kernel吞吐量&#xff0c;其中stream cnt&#xff0c;grid dim&#xff0c;block dim 产生后面几个变量&am…

如何给出好的“文言一心”指令?

一、文言一心是什么&#xff1f; 在现代技术背景下&#xff0c;“文言一心”还是百度公司创建的一款大语言模型。这款模型基于飞桨深度学习平台和文心知识增强大模型&#xff0c;并拥有强大的中文语料库&#xff0c;可以理解和生成富含文化内涵和哲理的文本内容。其核心技术架构…

第三方软件测试机构进行代码审计需要哪些专业的知识?

代码审计 进行代码审计需要专业的知识&#xff0c;包括编程语言、操作系统、数据库、网络知识以及安全知识等。 1.编程语言知识是进行代码审计的基础&#xff0c;因为你需要理解代码的语法和结构。对于不同的应用程序&#xff0c;你需要了解其所使用的编程语言的特点和语法规…

如何利用InputStream类实现文件读取与处理?

哈喽&#xff0c;各位小伙伴们&#xff0c;你们好呀&#xff0c;我是喵手。运营社区&#xff1a;C站/掘金/腾讯云&#xff1b;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点&#xff0c;并以文字的形式跟大家一起交流&#xff0c;互相学习&#xff0c;一…

嵌入式UI开发-lvgl+wsl2+vscode系列:2、label(标签)+button(按钮)+slider(滑块)控件熟悉及其示例demo运行

文章目录 一、前言二、常见控件示例demo模拟环境运行及接口熟悉&#xff08;重要&#xff09;如何修改示例main函数测试各种示例1、label示例1.1、label示例1&#xff08;标签基础示例&#xff09;1.2、label示例2&#xff08;标签带阴影效果&#xff09;1.3、label示例3&#…

在微信公众号怎么添加留言板功能

在如今信息爆炸的时代&#xff0c;微信公众号已成为企业与用户互动的重要桥梁。如何在这个平台上脱颖而出&#xff0c;吸引用户的眼球&#xff0c;提升用户黏性&#xff0c;成为每一个公众号运营者都需要思考的问题。今天&#xff0c;我们就来聊聊如何在微信公众号中巧妙添加留…