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

请添加图片描述

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

strstr的使⽤和模拟实现

strstr&#xff08;function&#xff09; Returnsa pointer to the irst occurrence of str2 in str1, or a null pointer if str2 is not part of str1. &#xff08;函数返回字符串str2在字符串str1中第⼀次出现的位置&#xff09;。 The matchingprocess doesnot include t…

如何通过虚拟人动画制作打响文旅信息资源?

随着科技的发展&#xff0c;虚拟人动画制作成为文旅产业数字化转型的重要手段。虚拟人动画制作可以将文化资源转化为生动的动画形式&#xff0c;为文旅资源的宣传和推广注入新的活力。如阿布扎比文旅部推出的数字虚拟形象“哈利法”&#xff0c;通过虚拟人动画制作形式&#xf…

漂流瓶挂机项目,聊天脚本赚钱新玩法,号称单机30-50+ (教程+软件)

一、项目简介&#xff1a; 漂流瓶挂机项目主要是通过使用探遇漂流瓶、音麦漂流瓶等聊天软件&#xff0c;为用户提供一个聊天赚钱的平台。男性用户需要充值后才能发送消息&#xff0c;而女性用户则可以通过接收消息赚取分红。男性用户发送给女性用户的消息费用大约在.1-.2元之间…

大数据开发面试题【Spark篇】

115、Spark的任务执行流程 driver和executor&#xff0c;结构式一主多从模式&#xff0c; driver&#xff1a;spark的驱动节点&#xff0c;用于执行spark任务中的main方法&#xff0c;负责实际代码的执行工作&#xff1b;主要负责&#xff1a;将代码逻辑转换为任务、在executo…

618值得买的东西有哪些?买什么最划算?超全品类大清单总结

平日里让许多人心动不已的收藏加购好物&#xff0c;是否常常因为价格昂贵而让人望而却步&#xff1f;然而&#xff0c;618活动期间的到来&#xff0c;恰恰为我们提供了一个难得的购物盛宴&#xff01;相信在第一波活动中&#xff0c;许多消费者已经跃跃欲试&#xff0c;开始享受…

C++干货 --类和对象(二)

前言&#xff1a; 上文中&#xff0c;我们介绍了类这一重要知识点&#xff0c;包括为什么要有类、类的使用方法、封装、以及对象实例化。详情可以去看我的文章&#xff1a;写文章-CSDN创作中心C干货 --类和对象(一)-CSDN博客写文章-CSDN创作中心 这篇文章&#xff0c;我们简单…

短视频矩阵系统4年独立开发正规代发布接口源码搭建部署开发

1. 短视频矩阵源码技术开发要求及实现流程&#xff1a; 短视频矩阵源码开发要求具备视频录制、编辑、剪辑、分享等基本功能&#xff0c;支持实时滤镜、特效、音乐等个性化编辑&#xff0c;能够实现高效的视频渲染和处理。开发流程主要包括需求分析、技术选型、设计架构、编码实…

保险业务管理系统的设计与实现(论文 + 源码)

保险业务管理系统.zip资源-CSDN文库https://download.csdn.net/download/JW_559/89361419 保险业务管理系统的设计与实现 摘要 历经二十余年的高速发展&#xff0c;我国保险行业的市场竞争已经达到白热化的程度&#xff0c;在同一个城市往往有数十家主体参与保险业务的竞争。保…

vue koa post 请求代理失败问题总结

场景是在使用 koa 写接口时&#xff0c;客户端发送 post 请求&#xff0c;服务端会报下面这个错误&#xff0c;导致接口未能访问成功&#xff1a; 前端接口一直 Pending 状态&#xff0c; 解决方案&#xff1a;走的是本地 mock 数据&#xff0c;未访问服务端的接口 总结&#x…

Facebook:解锁社交媒体的无限可能性

在当今数字化时代&#xff0c;社交媒体已经成为人们生活中不可或缺的一部分。而在众多社交媒体平台中&#xff0c;Facebook无疑是最为知名和影响力最大的之一。从其创立至今&#xff0c;Facebook一直在不断地演变和发展&#xff0c;成为了连接世界的桥梁&#xff0c;也是社交媒…

以不变应万变:在复杂世界中保持初心,坚持原则

在这个日新月异、瞬息万变的世界里&#xff0c;人情世故也显得尤为复杂。我们常常会因为忙碌的生活、工作压力以及人际关系的纠葛而感到迷茫和疲惫。在面对这些复杂局面的同时&#xff0c;如何保持内心的平静&#xff0c;坚持自己的原则&#xff0c;并在变幻莫测的环境中持续成…

【调试笔记-20240521-Linux-编译 QEMU/x86_64 可运行的 OpenWrt 固件】

调试笔记-系列文章目录 调试笔记-20240521-Linux-编译 QEMU/x86_64 可运行的 OpenWrt 固件 文章目录 调试笔记-系列文章目录调试笔记-20240521-Linux-编译 QEMU/x86_64 可运行的 OpenWrt 固件 前言一、调试环境操作系统&#xff1a;Ubuntu 22.04.4 LTS编译环境调试目标 二、调…

一个专为程序员设计的精致 Java 博客系统

大家好&#xff0c;我是 Java陈序员。 今天&#xff0c;给大家介绍一个设计精致的博客系统&#xff0c;基于 Java 实现&#xff01; 关注微信公众号&#xff1a;【Java陈序员】&#xff0c;获取开源项目分享、AI副业分享、超200本经典计算机电子书籍等。 项目介绍 bolo-solo …

抄表:现代生活中的数据采集关键

1.界定与发源 抄表&#xff0c;简单的说&#xff0c;指从各种各样计量机器设备(如智能水表、电度表、天然气表等)载入做好记录使用量的全过程。这一概念自工业化时代至今就出现了&#xff0c;最初由人工进行&#xff0c;伴随着科技创新&#xff0c;如今已经演化出自动化和远程…

Netflix Conductor整合Apache Seata实现支持分布式事务的服务编排方案

一、背景 Netflix Conductor是Netflix开源的一个微服务编排引擎。它旨在简化和自动化微服务架构中复杂的业务流程和工作流处理。Conductor允许开发人员使用声明性的方式定义工作流&#xff0c;将多个服务和任务组合成一个完整的业务流程。它提供了一个用户友好的UI界面&#xf…

echarts- 热力图, k线图,雷达图

热力图 热力图可以看成是一种矩形的散点图。 热力图的矩形受itemStyle的影响。 通常配合visualmap组件来根据值的大小做颜色的变化。 热力图主要通过颜色去表现数值的大小&#xff0c;必须要配合 visualMap 组件使用。 visualMap:视觉映射组件 let options {tooltip: {},xAx…

车辆相关识别API优化您的车辆系统

车辆相关识别API是开发者们所需的重要工具&#xff0c;它们基于先进的计算机视觉和深度学习技术&#xff0c;提供了强大的车辆识别和分类能力。这些API能够从图像或视频中快速准确地识别和提取车辆的关键信息&#xff0c;如车辆型号、品牌、颜色等。对于开发者而言&#xff0c;…

python-docx 在word中指定位置插入图片或表格

docx库add_picture()方法不支持对图片位置的设置 1、新建一个1行3列的表格&#xff0c;在中间的一列中插入图片 from docx import Document from docx.shared import Pt from docx.oxml.shared import OxmlElement from docx.enum.text import WD_ALIGN_PARAGRAPHdef add_cen…

Jenkins安装 :Aws EC2下Docker镜像安装

1 安装docker # 安装docker $ sudo yum install -y docker# 启动docker daemon $ sudo systemctl start docker# 用户加入docker组 $ sudo usermod -aG docker username 2 docker安装jenkins $ docker pull jenkins/jenkins:lts# 安装成功 $ docker images REPOSITORY …

动手学深度学习22 池化层

动手学深度学习22 池化层 1. 池化层2. 实现3. QA 课本&#xff1a; https://zh-v2.d2l.ai/chapter_convolutional-neural-networks/pooling.html 视频&#xff1a; https://www.bilibili.com/video/BV1EV411j7nX/?spm_id_fromautoNext&vd_sourceeb04c9a33e87ceba9c9a2e5f0…